tasklist /fi "imagename eq nginx.exe",如下显示:
映像名称 PID 会话名 会话# 内存使用
========================= ======== ================ =========== ============
nginx.exe 8944 Console1 5,128 K
nginx.exe 6712 Console1 5,556 K
2)nginx常用命令
nginx -s stop 强制关闭
nginx -s quit 安全关闭
nginx -s reload 改变配置文件的时候,重启nginx工作进程,来时配置文件生效
nginx -s reopen 打开日志文件
3)其它
可以通过配置文件开启多个nginx工作进程,但同时只有其中一个nginx工作进程在工作,其他的阻塞等待。
一个nginx工作进程最多同时可以处理1024个连接。
nginx中需要共享内存的cache或者模块无法在windows下正常使用。
不过,nginx官方正在改进,将来nginx会以服务的方式运行,使用 I/O completion ports代替select方法,使多个工作进程能并发工作。
要使用nginx配合php-cgi使用,需要修改环境变量,否则,php-cgi运行一定次数就推出,需要重启,设置PHP_FCGI_MAX_REQUESTS这个变量为0即可。
以上在win7上通过。
8)nginx以windows服务形式启动
1.下载微软两个工具:
instsrv.exe srvay.exe
2.执行命令:
instsrv Nginxc:/nginx/srvany.exe
3.配置Nginx的运行参数
可以直接将配置导入到注册表
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/NGINX/Parameters]
"Application"="C://nginx//nginx.exe"
"AppParameters"=""
"AppDirectory"="C://nginx//"
注意:windows 下的Nginx 内置的module 很多没有,用Nginx -V 命令查看。
9)Nginx下部署mono+asp.net环境
1、从Mono for Windows中提取FastCGI-Mono-Server
2、Nginx nginx.conf 的配置:
worker_processes 1
error_log logs/error-debug.log info
events {
worker_connections 1024
}
http {
include mime.types
default_type text/plain
sendfileon
keepalive_timeout 65
index index.html index.htm
server {
listen 80
server_name yourdomain.com
index index.aspx default.aspx
location / {
root D:\www/yourwebapp
fastcgi_pass 127.0.0.1:8000
fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name
include fastcgi_params
}
}
}
将上面的 FastCGI-Mono-Server 提取出来,所有文件全部注册到 GAC(否则 Web 应用会找不到他们,当然你也可以直接放到 webapp/bin),然后解压到某个文件夹,这里假设为 D:/FastCGI-Mono-Server。
之后我们就可以按下列命令运行 FastCGI:
fastcgi-mono-server2 /socket=tcp:127.0.0.1:8000 /root="D:\www\yourwebapp" /applications=yourdomain.com:/:. /multiplex=True
最后执行运行 Nginx 服务器,我们的 ASP.Net 程序就能脱离 IIS。
一、实验环境
阅读本文前,假定读者对nginx安装、虚拟机的安装有了解,并未对这些内容作详细介绍。
一台pc
pc安装的 *** 作系统为win7,使用vmware虚拟两台linux,pc 连接到了一台交换机,IP为: 192.168.1.100
nginx版本为1.05,其中win7为负载均衡代理机器,虚拟的linux为web服务器
vmware配置时,在网络连接一项选: bridged,两台虚拟机的ip分别为: 192.168.1.102,192.168.1.103
二、配置文件
1 win7用于负载均衡的nginx的配置文件如下(nginx.conf),修改完后可再控制台输入: nginx -t,来测试修改的配置文件是否正确。
upstream test {
server 192.168.1.102
server 192.168.1.103
}
server {
listen 80
server_name localhost
charset gbk
#access_log logs/host.access.log main
location / {
proxy_next_upstream error timeout invalid_header http_500
http_502 http_503 http_504 http_404
proxy_connect_timeout 10s
proxy_read_timeout 2s
#proxy_send_timeout 10s
proxy_pass http://test
}
2 linux上作为web服务器的nginx的配置文件可为默认,没有变化
3 修改作为web服务器的nginx,html目录下的index.html,在Welcome to nginx!后面加上描述: i am server x!,这一步是为了区分服务是否生效。
三、运行服务
1.win7:直接在控制台输入:nginx即可
2.linux:nginx -c ./conf/nginx.conf
如果运行成功,这时在你win7的浏览器中输入http://192.168.1.100 ,这时会有i am server 2显示,按f5刷新,server名字每次都会变化!
四、结论
本文只是在一台机器上简单对轮询试负载均衡做了简单的测试。
后续的实验,将全部在此机器上做测试了
在win7下用的是IIS做web服务器,但近来因项目需求的原因,需要在服务器遇到404错误的时候自动做转向(不是在客户端的跳转,而是在服务器收到客户端请求去某目录下读取文件返回时,如果发现目录或目录下文件不存在,自动转到另一个服务器去取),用IIS发现很难做到这点,于是决定搭建nginx的开发环境,通过配置实现这一点。 首先,google nginx和php,分别到他们的官网把最新版本的下载回来,我当时下的PHP是5.4.3的版本,nginx是1.5.2,我把他们都放在D盘下一个叫webserver的文件夹里,然后开始做配置了。 nginx的启动很简单,进入它的目录,然后双击nginx.exe,如果没有端口冲突等问题的话,直接在浏览器输入localhost就可以访问welcome to nginx字样的网页了,这是默认的欢迎页面,放在自带的默认网页文件目录html下的。难道就这么简单吗?当然不是的。 这时如果你在html目录下建一个php文件,写上一句测试php环境的最经典的,然后在浏览器输入这个php文件的路径进行访问,你会发现nginx根本不懂怎样去解析php代码,这是因为nginx与PHP还没有配合起来。按道理来说,当遇到php文件的时候,nginx应该把它交给php的fast-cgi来处理,然后把处理完的结果返回给客户端(浏览器)的。 怎样告诉nginx当遇到php文件时交给谁处理呢?打开nginx1.5.2的文件夹,找到conf目录,编辑目录下的nginx.conf文件,我的编辑结果如下所示,具体配置过程中需要注意什么请看注释: server { listen 80 server_name localhost charset utf-8 location / { root E:/work/jentian/client//html文件目录,由于我们项目的客户端代码与服务端服务是严格分开的,所以这里的root跟php的root不同 index index.html index.htm } location ~ .php { root E:/work/jentian/server//php文件目录 fastcgi_param SCRIPT_FILENAME E:/work/jentian/server$fastcgi_script_name//注意,$fastcgi_script_name前面的路径必须与root是一致的 fastcgi_index index.php fastcgi_pass 127.0.0.1:9000 include fastcgi_params } } nginx的配置也就这么多了,很简单吧,但这时候当你刷新php页面的时候,会发现nginx现在还是没有办法解析php文件,原因在于php的fast-cgi还没有启动,如果打开一个普通的命令提示符窗口,然后输入命令启动fast-cgi时,启动后这个窗口是不能关闭的,否则fast-cgi的进程也会终止,不能继续解析php文件了,后来查了一下,原来windows是有一个运行隐形控制台的方法的,用这个方法启动fast-cgi,就不怕关闭控制台后fast-cgi也跟着结束的问题的。最后,写了一个批处理文件来启动fast-cgi和nginx,这能就能一键启动nginx+php的环境了。下面是这个批处理文件的内容: @echo off set PHP_FCGI_MAX_REQUESTS = 1000 echo Starting PHP FastCGI... rem 下面这里的分别替换成你的php-cgi.exe和php.ini的路径 ,后面的-b,-c等参数必须保留且注意前后空格 RunHiddenConsole D:/webServer/php-5.4.3/php-cgi.exe -b 127.0.0.1:9000 -c D:/webServer/php-5.4.3/php.ini //这里 echo Starting nginx... rem 注意替换成你的nginx目录 D:/webServer/nginx-1.5.2/nginx.exe -p D:/webServer/nginx-1.5.2/ cd D:/webServer/nginx-1.5.2/ pause 把这个批处理文件保存到好,双击,就能启动你的nginx+php环境了,这时再刷新一下你的phpinfo页面,一切正常了。欢迎分享,转载请注明来源:内存溢出
评论列表(0条)