Chinaunix首页 | 论坛 | 博客
  • 博客访问: 411587
  • 博文数量: 67
  • 博客积分: 1742
  • 博客等级: 上尉
  • 技术积分: 753
  • 用 户 组: 普通用户
  • 注册时间: 2009-06-15 01:54
文章分类

全部博文(67)

文章存档

2014年(1)

2013年(4)

2012年(1)

2011年(9)

2010年(29)

2009年(23)

我的朋友

分类: LINUX

2010-09-15 16:35:17

Nginx配置文件非常重要,很多实用的功能都需要在此文件进行配置后,方可使用。此文件路径为/usr/local/nginx/conf/nginx.conf.以下是其内容的详细说明,有网上转载的内容,有的是我自己实际应用时添加的内容。

一、基本配置  

#运行用户
user www www;
#启动进程
worker_processes 1;
#全局错误日志及PID文档
error_log  /web/www/logs/error.log notice;
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 
;

      index index.html index.htm index.php;

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

         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 运行状态

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

 

Active connections: 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_index index.php;
                         include fcgi.conf;
                }
        }
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_index index.php;
                         include fcgi.conf;
                }
        }

 

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


 

server
       {
               listen 80;
               server_name bbs.linuxtone.org
               index index.html index.php index.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 of images and other file types
               location ~* ^.+\.(gif|jpg|png|swf|flv|rar|zip)$ {
                       valid_referers none blocked server_names *.linuxtone.org http://localhost;
               if ($invalid_referer) {
               rewrite ^/ http://bbs.linuxtone.org/images/default/logo.gif;
               return 403;
                                     }
                                                               }
               # Add expires header for static 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?$
               {
                       include enable_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;
               index index.html index.htm index.php;
               root /data/www/wwwroot/down;
               error_page 404 /index.php;
               # redirect server error pages 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伪装服务器

 

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

 

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

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=/

 

三、参考文献

    1、

    2、LEMP构建高性能WEB服务器(第二版)

      


阅读(5185) | 评论(0) | 转发(0) |
0

上一篇:MySQL show

下一篇:/tmp 100%

给主人留下些什么吧!~~