Nginx配置文件说明

 1

一、基本配置

#运行用户
user www www;
#启动进程
worker_processes 1;
#全局错误日志及PID文档
error_log  /web/www/logs/error.lognotice;
pid       /usr/local/nginx/logs/nginx.pid;
#工作模式及连接数上限
events {
   use epoll;
   worker_connections      51200;
}
#设定http服务器,利用他的反向代理功能提供负载均衡支持
http {
   #设定mime类型
   include      mime.types;
   default_type application/octet-stream;
   #设定日志格式
   log_format main        '$remote_addr - $remote_user[$time_local]'
   '"$request" $status$bytes_sent '
   '"$http_referer""$http_user_agent" '
   '"$gzip_ratio"';
   log_format download '$remote_addr -$remote_user [$time_local] '
   '"$request" $status$bytes_sent '
   '"$http_referer""$http_user_agent" '
   '"$http_range""$sent_http_content_range"';
   #设定请求缓冲
   client_header_buffer_size    1k;
   large_client_header_buffers 4 4k;
   #开启gzip模块
   gzip on;
   gzip_min_length 1100;
   gzip_buffers    4 8k;
   gzip_types      text/plain;
   output_buffers 1 32k;
   postpone_output 1460;
   #设定access log
  access_log logs/access.log main;
   client_header_timeout 3m;
   client_body_timeout    3m;
   send_timeout          3m;
   sendfile                on;
   tcp_nopush              on;
   tcp_nodelay            on;
   keepalive_timeout 65;

   #设定服务器支持shtml
   ssi on;
   ssi_silent_errors on;
   ssi_types text/shtml;
   #设定负载均衡的服务器列表
   upstream mysvr {
      #weigth参数表示权值,权值越高被分配到的几率越大
      #本机上的Squid开启3128端口
      server 192.168.8.1:3128 weight=5;
      server 192.168.8.2:80 weight=1;
      server 192.168.8.3:80 weight=6;
   }
   #设定虚拟主机
   server {
      listen          80;
      server_name    192.168.8.1 www.lnmp.com;

      index index.html index.htm index.php;

root /web/www;
      charset gb2312;
      #设定本虚拟主机的访问日志
     access_log logs/www.lnmp.com.access.log main;
      #假如访问/img/*, /js/*, /css/* 资源,则直接取本地文档,不通过squid
      #假如这些文档较多,不推荐这种方式,因为通过squid的缓存效果更好
      location ~.*\.(gif|jpg|jpeg|png|bmp|swf)$
      {                                                 

  2009/12/15 2
         expires      30d;
      }
      location ~ .*\.(js|css)?$
      {
         expires      1h;
      }

      #假如这些文档较多,不推荐这种方式,因为通过squid的缓存效果更好

       location ~ .*\.(php|php5)?$
       {     
          #fastcgi_pass  unix:/tmp/php-cgi.sock;
          fastcgi_pass  127.0.0.1:9000;
          fastcgi_index index.php;
          include fcgi.conf;
       } 
       #设置主机开启SSI支持shtml
       location ~ .*\.(shtml)?$ {
          ssi on;
          ssi_silent_errors on;
          ssi_types text/shtml;
       }
       #对"/" 启用负载均衡
       location / {
         proxy_pass      http://mysvr;
         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;
         client_max_body_size    10m;
         client_body_buffer_size 128k;
         proxy_connect_timeout 90;
         proxy_send_timeout      90;
         proxy_read_timeout      90;
         proxy_buffer_size      4k;
         proxy_buffers          4 32k;
         proxy_busy_buffers_size 64k;
         proxy_temp_file_write_size 64k;
      }
      #设定查看Nginx状态的地址
      location /NginxStatus {
         stub_status            on;
         access_log             on;
         auth_basic             "NginxStatus";
      }
   }
}
@@%%%%%%%%%%%%%%呵呵,我是华丽的分割线!%%%%%%%%%%%%%%%%%%%%@@

二、高级配置

1、查看 Nginx 运行状态

        输入地址http://192.168.8.1/NginxStatus/,输入验证帐号密码,即可看到类似如下内容

Activeconnections: 328
server accepts handled requests
9309    8982        28890
Reading: 1 Writing: 3 Waiting: 324
第一行表示现在活跃的连接数
第三行的第三个数字表示Nginx运行到

2、配置虚拟主机

        在http下添加server来增加虚拟主机,代码如下

--------------------------------------------------------------------------------------

server
        {
                listen 80;
                server_name  host1.com;
                root /myserver/host1;

               location ~ .*\.(php|php5)?$
                {
                        #fastcgi_pass unix:/tmp/php-cgi.sock;
                        fastcgi_pass  127.0.0.1:9000;
                         fastcgi_indexindex.php;
                         include fcgi.conf;             
       

   2009/12/15 3
                }
        }
server
        {
                listen 80;
                server_name  host2.com;
                root /myserver/host2;

               location ~ .*\.(php|php5)?$
                {
                        #fastcgi_pass unix:/tmp/php-cgi.sock;
                        fastcgi_pass  127.0.0.1:9000;
                         fastcgi_indexindex.php;
                         includefcgi.conf;
                }
        }

3、配置Nginx虚拟主机(防盗链及expires设置)

-------------------------------------------------------------------------------

server
       {
               listen       80;
               server_name  bbs.linuxtone.org www.linuxtone.org;
               index index.html index.phpindex.htm;
               root  /data/www/wwwroot/lt/bbs;
               #access_log/var/log/nginx/access_bbs.redocn.com.log combined;
               location / {
               if (!-e $request_filename){
                         rewrite^/archiver/((fid|tid)-[\w\-]+\.html)$  /archiver/index.php?$1 last;
                         rewrite^/forum-([0-9]+)-([0-9]+)\.html$  /forumdisplay.php?fid=$1&page=$2 last;
                         rewrite^/thread-([0-9]+)-([0-9]+)-([0-9]+)\.html$ /viewthread.php?tid=$1&extra=page%3D$3&page=$2

last;
                         rewrite^/space-(username|uid)-(.+)\.html$  /space.php?$1=$2 last;
                         rewrite^/tag-(.+)\.html$ /tag.php?name=$1 last;
                         break;
                                         }

                }

               #Preventing hot linking ofimages and other file types
               location ~*^.+\.(gif|jpg|png|swf|flv|rar|zip)$ {
                       valid_referersnone blocked server_names *.linuxtone.org http://localhost;
               if ($invalid_referer) {
               rewrite   ^/   http://bbs.linuxtone.org/images/default/logo.gif;
               return   403;
                                     }
                                                              }
               # Add expires header forstatic content
               location ~*\.(js|css|jpg|jpeg|gif|png|swf)$ {
               if (-f $request_filename){
                  root/data/www/wwwroot/lt/bbs;
                  expires      1d;
                  break;
                  }

               }
               #support php
               location ~ .*\.php?$
               {
                       includeenable_php5.conf;
               }

       }

4、Nginx搭建下载站点限制并发数和速率

vi/usr/local/nginx/conf/vhosts/down.redocn.com.conf
------------------------------------------------------------------------

limit_zone   one $binary_remote_addr  10m;
server
       {
               listen       80;
               server_name  down.redocn.com;            

  2009/12/15 4
               index index.html index.htmindex.php;
               root   /data/www/wwwroot/down;
               error_page 404 /index.php;
               # redirect server errorpages to the static page /50x.html
               error_page   500 502 503 504  /50x.html;
               location = /50x.html {
                root   html;
                  }
               #Zone limit
               location / {
                   limit_conn   one 1;
                   limit_rate  20k;
               }


               # serve static files
               location ~^/(images|javascript|js|css|flash|media|static)/  {
               root    /data/www/wwwroot/down;
               expires 30d;
                }
       }

 5、如何实现Nginx身份验证

mkdir/usr/local/nginx/conf/htpasswd  #创建存放密码的目录
------------------------------------------------------------------------

/usr/local/apache2/bin/htpasswd-c /usr/local/nginx/conf/htpasswd/tongji admin

server
       {
              location ~ ^/(tongji)/  {
                 root    /data/www/wwwroot/count;
                 auth_basic              "LT-COUNT-TongJi";
                auth_basic_user_file /usr/local/nginx/conf/htpasswd/tongji;
              }

       }

6、如何实现Nginx目录列表

 在相关虚拟主机配置文件加入如下设置即可

------------------------------------------------------------------------

location  /  {
    autoindex  on;
}

7、修改Nginx的header伪装服务器

cdnginx-0.6.31/src/core
#define NGINX_VERSION     "1.2"
#define NGINX_VER         "LTWS/" NGINX_VERSION

重新编译nginx即可,查看一下效果:
[root@count ~]# curl -I http://bbs.linuxtone.org

--------------------------------------------------------------------

HTTP/1.1 200 OK
Server: LTWS/1.2
Date: Mon, 23 Jun 2008 06:11:17 GMT
Content-Type: text/html; charset=gb2312
Transfer-Encoding: chunked
Connection: keep-alive
Set-Cookie: lt__sid=cJN2FT; expires=Mon, 30-Jun-2008 06:11:17 GMT; path=/
Set-Cookie: lt__onlineusernum=228; expires=Mon, 23-Jun-2008 06:16:17 GMT;path=/

 

 

你可能感兴趣的:(Nginx配置文件说明)