Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1428180
  • 博文数量: 122
  • 博客积分: 340
  • 博客等级: 一等列兵
  • 技术积分: 2967
  • 用 户 组: 普通用户
  • 注册时间: 2009-04-01 11:50
个人简介

说点什么呢

文章分类

全部博文(122)

文章存档

2018年(2)

2017年(1)

2015年(2)

2014年(30)

2013年(81)

2011年(5)

2009年(1)

分类: 系统运维

2013-11-26 14:02:53

Nginx管理

(整理时间:2009-12-28)

(软件版:0.73)

nginx 官网:

1. 当使用反向代理功能,后面的虚拟主机不认域名

现象:

     前面用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就可以了;

2. 不能上传大的文件:

现象:

     当通过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用户即可以。

3. 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

4. 关于nginx ngx_http_stub_status_module模块

这个模块可以获取自从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; 记录认证用户的用户名和密码,用户信息可以用apachehtpasswd命令来建立和生成,与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 已经处理完正在等候下一次请求指令的驻留连接。 

5. 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、在对phpfastcgi做集群时,需要先修改php-fpm.conf文件,注意以下两个部分:

a.9000  默认情况下fastcgi监听的是回环地址,既127.0.0.1,要将监听端口修改成内网地址如192.168.1.10等;

b. 192.168.1.10,127.0.0.1 默认情况下,fastcgi只允许来自回环地址的客户端的链接,这个需要修改成nginx机器的地址可以进行连接。

c. nginx 做集成时,它能够判断后台服务器是否在线,也即如果后台服务器出了问题,nginx是不会将连接转发给他的

阅读(1950) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~