斑竹网络专注为中小企业客户提供以管理服务为核心的IT全方位服务 https://www.sysadm.cn
分类: 系统运维
2013-11-26 14:02:53
Nginx管理
(整理时间:2009-12-28)
(软件版:0.73)
nginx 官网:
现象:
前面用nginx 作反向代理,后面用apache提供基于主机名的虚拟主机,但是所得到的页面总是apache的默认主机的内容;
原因:
是nginx在转发的时候没有将用户请求的虚拟主机的主机名转发给apache,所以apache 在没有得到主机名的时候就发送默认的虚拟主机内容给用。
解决:
在/usr/local/server/nginx/conf/nginx.conf文件中的server块中的location 中添加如下内容:
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
即将主机名,真实的IP地址,远程用户的IP地址等信息都转发给后面的apache 上,然后重启nginx就可以了;
现象:
当通过http的形式上传一个较大的文件时,连接被中断,同时在nginx 的错误日志里有如下信息:
2190132 client intended to send too large body: 124969032 bytes
原因:
Nginx 默认不允许上传较大的文件,所以就报上述错误;
解决:
在/usr/local/server/nginx/conf/nginx.conf文件里的http块里增加下列行即可:
client_max_body_size 200m;
其中200m就是限制http体的大小,可以根据需要修改其值,然后重启nginx用户即可以。
nginx日不能像应用服务那样每日或指定大小进行切换,而只能通脚本的方式来切换。以下是切换nginx日切的脚本
#!/bin/bash
. /root/.bash_profile
if [ -f /jongo/logs/]
then
rm -rf /jongo/logs/
fi
for (( i=4; i>0; i=i-1 ))
do
j=`expr $i - 1`
echo $i
echo $j
if [ -f /jongo/logs/]
then
mv /jongo/logs//jongo/logs/www.bdt.cn_access.log.$i.gz
fi
done
##exit
if [ -f /jongo/logs/]
then
mv /jongo/logs//jongo/logs/
kill -USR1 `cat /usr/local/server/nginx/logs/nginx.pid`
gzip /jongo/logs/
fi
这个模块可以获取自从nginx上次启动以来处理的任务信息。该模块非核心模块,所以要求在编译时手动添加编译参数with-http_stub_status_module,编译进去。
模块配置:
在server 块中添加如下内容:
location /nginx_status 访问的uri
{
stub_status on; 开启stub_status模块
access_log off; 关闭日志
auth_basic nginx_status; 开启访问认证
auth_basic_user_file htpasswd; 记录认证用户的用户名和密码,用户信息可以用apache的htpasswd命令来建立和生成,与apache的文件类似
allow 116.28.238.166; 允许访问的IP地址
}
重启nginx即,以下是nginx_status信息:
Active connections: 64 目前nginx活动的连接数
server accepts handled requests
970 970 3277
Reading: 0 Writing: 1 Waiting: 63
server accepts :表示服务器接收到的连接请求数;
handled: 表示服务器已经成功处理了的连接请求数,即已经成功的完成了三次握的连接数,如果这个数据与server accepts 的数字相等,则说明服务器对每个连接请求都成功处理了,没有丢失的现象。
Requests:表示服务器成功的处理了的数据请求数,上面的数字 3277/970=3.37表示平均每个连接请求会处理3.37个数据请求;
Reading:读取到客户端的 Header 信息数
Writing:表示返回给客户端的 Header 信息数
waiting -- 开启 keep-alive 的情况下,这个值等于 active - (reading + writing),意思就是 Nginx 已经处理完正在等候下一次请求指令的驻留连接。
在nginx的配置文件里的http块里添加如下内容:
upstream mysvr {
server 192.168.1.10:9000 weight=1;
server 192.168.1.7:9000 weight=6;
}
这个就是定义了要转发的后端服务器信息,然后在server 块部分:
fastcgi_pass mysvr ;
然后重新服务即可;
注意:
1、在对php的fastcgi做集群时,需要先修改php-fpm.conf文件,注意以下两个部分:
a.
b.
c. nginx 做集成时,它能够判断后台服务器是否在线,也即如果后台服务器出了问题,nginx是不会将连接转发给他的