室内nginx技术交流
简介:
Nginx(发音同 engine x)是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行。由俄罗斯的程序设计师Igor Sysoev所开发,供俄国大型的入口网站及搜索引擎Rambler(俄文:Рамблер)使用。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,在中国使用nginx网站用户有:新浪、网易、 腾讯等。
特点:
在window下面安装很简单,下面已目前最新版本安装(nginx-1.5.6 )举例说明:
在nginx官网下载nginx-1.5.6.zip安装包
解压到指定目录(如 d:/nginx-1.5.6) 即可使用。
进入到解压后的目录nginx-1.5.6
启动: nginx.exe
停止: nginx -s stop
重启: nginx -s reload
tar -zxvf nginx-1.5.6.tar.gz
cd nginx-1.5.6
./configure --user=wap7 --group=wap --prefix=/home/wap7/nginx1.5.6/ --with-openssl=/usr/local/openssl --without-http_proxy_module --without-http_rewrite_module --with-pcre=/usr/local/pcre-8.10
启用rewrite模块 需要用到pcre库
启用ssl连接 需要用到openssl库
安装完成 !
启动:./nginx
停止:./nginx –s stop
重启: ./nginx –s reload
全局配置
worker_processes 4;
error_log logs/error.log;
pid conf/nginx.pid;
events {
use epoll; #epoll是多路复用IO(I/O Multiplexing)中的一种方式,但是仅用于linux2.6以上内核,可以大大提高nginx的性能
worker_connections 1024;#单个后台worker process进程的最大并发链接数
}
http {
#设定mime类型,类型由mime.type文件定义
include /etc/nginx/mime.types;
default_type application/octet-stream;
#设定日志格式
access_log /var/log/nginx/access.log;
#必须设为 on,如果用来进行下载等应用磁盘IO重负载应用,可设置为 off,以平衡磁盘与网络I/O处理速度,降低系统的uptime.
sendfile on;
keepalive_timeout 65;
#开启gzip压缩
gzip on;
gzip_disable "MSIE [1-6].(?!.*SV1)";
client_header_buffer_size 1k;
large_client_header_buffers 4 4k;
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
upstream mysvr {
#weigth参数表示权值,权值越高被分配到的几率越大
server 192.168.8.2:80 weight=1;
server 192.168.8.3:80 weight=6;
}
server配置
#侦听80端口
listen 80;
#定义使用wapmail.10086.cn访问
server_name w;
access_log logs/ wapmail.10086.cn.access.log main;
location / {
proxy_pass http://wap_login_server; #对应一个upstream配置
client_max_body_size 100m; #客户端最大请求报文数据,超过这个值将拒绝请求
proxy_set_header x-forward-for $remote_addr; #透传用户IP到后端服务器
proxy_set_header Host $host;
proxy_pass_header Set-Cookie;
#透传cookie到后端服务器
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /root;
}
upstream 是nginx负载均衡的主要模块
upstream wap_login_server {
server 172.16.200.55:9000;
server 172.16.200.56:9000;
}
默认是轮询负载策略,nginx提供四种负载策略
1、轮询:(默认,weight 指定权重)
2、ip_hash: 根据请求IP地址hash结果分配后台服务
3、fair:按后端服务器的响应时间来分配请求,响应时间短的优先分配
4、url_hash:按访问url的hash结果来分配请求
location配置
upstream 是nginx负载均衡的主要模块
upstream wap_login_server {
server 172.16.200.55:9000;
server 172.16.200.56:9000;
}
默认是轮询负载策略,nginx提供四种负载策略
1、轮询:(默认,weight 指定权重)
2、ip_hash: 根据请求IP地址hash结果分配后台服务
3、fair:按后端服务器的响应时间来分配请求,响应时间短的优先分配
4、url_hash:按访问url的hash结果来分配请求
rewrite配置
rewrite regex replacement flag
last – 终止当前rewirte,继续匹配
break – 中止rewirte,不在继续匹配
redirect – 返回临时重定向的HTTP状态302
permanent – 返回永久重定向的HTTP状态301
rewrite "^/wp12/(.*)$" /wp/$1 break;
proxy_pass http://wap_rm_wp_server;
……省略
}
将请求 /wp12/xxx.htm URL重写成 /wp/xxx.htm
nginx管理
如果改变了Nginx的配置文件(nginx.conf),想重启Nginx,可以发送系统信号给Nginx主进程的方式来进行。这样进程在处理完当前请求后,使用新的进程处理新的请求,然后关闭旧的进程。不过,在重启之前,要确认Nginx配置文件的语法是正确的,可通过如下命令测试配置文件是否正确:
nginx:configuration file /nginx_home/conf/nginx.conf test failed
the configuration file /nginx_homeconf/nginx.conf syntax is ok
configuration file /nginx_home/conf/nginx.conf test is successful
对于Nginx 0.8.x之后的版本 /nginx_home/sbin/nginx -s reload
平滑升级
1、 备份旧版本的nginx可执行文件,复制新版本的nginx这行文件
mv /opt/nginx/sbin/nginx /opt/nginx/sbin/nginx.old
cp objects/nginx /opt/nginx/sbin/nginx
2、 测试新版本nginx是否正常
/opt/nginx/sbin/nginx –t –c /opt/nginx/conf/nginx.conf
3、 平滑升级nginx
kill –USR2 `cat /nginx_home/logs/nginx.pid`
4、 旧版本Nginx的pid变为oldbin,这是旧版本和新版本的nginx同时运行,过一段时间等就nginx处理完用户请求后,执行下面操作
5、 从容关闭旧版本的Nginx进程
kill –WINCH `cat /nginx_home/logs/nginx.oldbin`
6、 决定是否升级到新版的nginx
kill –HUP `cat /nginx_home/logs/nginx.oldbin` ##nginx在不重载配置文件启动工作进程
kill –QUIT `cat /nginx_home/logs/nginx.oldbin` ##关闭旧版nginx
7、验证nginx是否升级成功
/nginx_home/sbin/nginx –V ###显示类似以下信息则升级成功
nginx version: nginx/1.2.9
nginx实例