windows下nginx安装、配置与使用
相比apeach、iis,nginx以轻量级、高性能、稳定、配置简单、资源占用少等优势广受欢迎。
说到反向代理,可能很多人都听说,但具体什么是反向代理,很多人估计就不清楚了。摘一段百度百科上的描述:
Html代码
1. 反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器。 这里讲得很直白。反向代理方式实际上就是一台负责转发的代理服务器,貌似充当了真正服务器的功能,但实际上并不是,代理服务器只是充当了转发的作用,并且从真正的服务器那里取得返回的数据。这样说,其实nginx完成的就是这样的工作。我们让nginx监听一个端口,譬如80端口,但实际上我们转发给在8080端口的tomcat,由它来处理真正的请求,当请求完成后,tomcat返回,但数据此时没直接返回,而是直接给nginx,由nginx进行返回,这里,我们会以为是nginx进行了处理,但实际上进行处理的是tomcat。
说到上面的方式,也许很多人又会想起来,这样可以把静态文件交由nginx来进行处理。对,很多用到nginx的地方都是作为静态伺服器,这样可以方便缓存那些静态文件,比如CSS,JS,html,htm等文件。
闲话就不多说了,我们直接来看看nginx怎么使用。
1)下载地址:
http://nginx.org
2)启动
解压至c:\\nginx,运行nginx.exe(即nginx -c conf\\nginx.conf),默认使用80端口,日志见文件夹C:\\nginx\\logs
3)使用
http://localhost
4)关闭
nginx -s stop
5) nginx常用命令
nginx -s stop 强制关闭
nginx -s quit 安全关闭
nginx -s reload 改变配置文件的时候,重启nginx工作进程,来时配置文件生效
nginx -s reopen 打开日志文件
如果不想直接加载,而只是想看看自己的配置文件有没有问题,可以直接输入:
Xml代码
1. nginx -t 这可以检查配置文件中是否有错。 下面我们所有的修改都假设我们修改完成后运行了nginx -s reload进行重新加载配置文件,请注意。
8)其它
可以通过配置文件开启多个nginx工作进程,但同时只有其中一个nginx工作进程在工作,其他的阻塞等待。
一个nginx工作进程最多同时可以处理1024个连接。
nginx中需要共享内存的cache或者模块无法在windows下正常使用。
不过,nginx官方正在改进,将来nginx会以服务的方式运行,使用 I/O completion ports代替select方法,使多个工作进程能并发工作。
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 命令查看。
#user nobody;
worker_processes 2;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
#log_format main '$remote_addr - $remote_user [$time_local] \"$request\" '
# '$status $body_bytes_sent \"$http_referer\" '
# '\"$http_user_agent\" \"$http_x_forwarded_for\"';
access_log logs/access.log main;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
upstream zfrsglappcluster {
server 172.16.1.21:8987 weight=5;
server 172.16.1.21:8987 weight=5;
keepalive 20;
}
server {
listen 80;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
proxy_http_version 1.1;
#开启对http1.1支持, nginx 与后端的服务器连接默认是使用的http 1.0,
这个大家应该都了解,如果设置为HTTP1.1 复用链接的话就会大大降低了tcp开销,节省系统资源
proxy_set_header Connection \"\";
# 设置Connection为空串,以禁止传递头部到后端
# http1.0中默认值Connection: close
proxy_pass http://zfrsglappcluster/test/ ;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
动静访问分离:正常的网页业务不仅仅是HTTP POST一个请求处理,还涉及到很多静态png\\css\\js等等的加载,为了减少业务服务器的不必要的负担,保证其好钢用在刀刃上。我们需要使用squid Varnish nginx cache等等静态加速器;
本案适用的是nginx 自带的cache,具体详细设置请见本文的【【【【附件】】】:
http://download.csdn.net/detail/shuzui1985/5065063
location ~ .*\\.(gif|jpg|jpeg|png|bmp|swf|css|js|html|htm)$
{
#root /home/webos/sam/html;
proxy_pass http://localhost ;
#proxy_pass http://squid3server ;
##proxy_set_header Host $host;
##proxy_set_header X-Real-IP $remote_addr;
##proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_redirect off;
proxy_set_header Host $host;
proxy_cache cache_one;
proxy_cache_valid 200 302 1h;
proxy_cache_valid 301 1d;
proxy_cache_valid any 1m;
expires 30d;
}
nginx代理服务器的nginx.conf 配置优化:
a) worker_processes 4; 开启的工作进程最好与你的硬件CPU个数一致,一味的加大processes,会使得系统的切换开销增大得不偿失
b) worker_rlimit_nofile 20000; 设定软配置每个进程的文件HANDLE打开数设置的尽量大,同时需要注意将linux系统中的该设置修改到20000以上最好.
ulimit -n 这个数字说明了一个普通用户能够在一个单独会话中所能打开最大的文件数目。注意。如果是root,以下操作不能使ulimit -n的输出增加。因为用户root用户不受这个ulimit限制。只有普通用户才会受这个限制。
修改方法
/etc/security/limits.conf
修改
* soft nofile 20000 * hard nofile 20000
c) proxy_connect_timeout 180;
proxy_read_timeout 180;
proxy_send_timeout 180; //将nginx与后端的tomcat连接超时,上行超时,下行超时的时间都设置的尽量大,范围大并发的情况下出现502 504.
因篇幅问题不能全部显示,请点此查看更多更全内容