php是最好的语言

lnmp的nginx的配置

在nginx.conf中可以看见基本的配置,之前在搭建博客的时候也配置了一些。下面看一些其他常见的配置。应该用include进行配置方便管理

一、下面是网上的一份配置,有些地方改了一下。

  1. #$开头是变量  

  2. #定义Nginx运行的用户和用户组  

  3. user work work;  

  4. #nginx进程数,建议设置为等于CPU总核心数  

  5. worker_processes  4;  //这里设置成自己的服务器的核数

  6. #指当一个nginx进程打开的最多文件描述符数目  

  7. worker_rlimit_nofile 204800;  

  8. #全局错误日志定义类型,[ debug | info | notice | warn | error | crit ]  

  9. error_log  /opt/log/nginx/error.log error;  

  10. #工作模式及连接数上限  

  11. events {  

  12.         #参考事件模型,use [ kqueue | rtsig | epoll | /dev/poll | select | poll ];   

  13.         #epoll模型是Linux 2.6以上版本内核中的高性能网络I/O模型,如果跑在FreeBSD上面,就用kqueue模型  

  14.         use epoll;  

  15.         #单个后台worker process进程的最大并发链接数  

  16.         worker_connections  102400;  

  17. }  

  18. #设定http服务器,利用它的反向代理功能提供负载均衡支持  

  19. http {  

  20.         #文件扩展名与文件类型映射表  

  21.         include       mime.types;  

  22.         #默认文件类型  

  23.         default_type  application/octet-stream;  

  24.         #默认编码  

  25.          server_tokens off;//这个是为了安全

  26.         charset utf-8;  

  27.         #设定日志格式  

  28.         #log_format  main  '$idXXXX\t$remote_addr\t$remote_user\t$time_local\t$http_host\t$request\t'  

  29.         #             '$status\t$body_bytes_sent\t$http_referer\t'  

  30.         #             '$http_user_agent\t$http_x_forwarded_for\t$request_time\t$upstream_response_time\t$userid';  

  31.         log_format main "$cookie_idXXXX\t$remote_addr\t$remote_user\t[$time_local]\t$request_method\t$host\t$request_uri\t"  

  32.                         "$request_time\t$status\t$body_bytes_sent\t'$http_referer'\t"  

  33.                         "'$http_user_agent'\t'$http_x_forwarded_for'\t$upstream_addr\t$upstream_response_time\t$upstream_status\t";  

  34.                    

  35.     #不可见字符分隔日志格式  

  36.     #include other_log_format.conf;  

  37.     #实时日志收集json格式日志  

  38.     #include json_log_format.conf;  

  39.   

  40.         #日志流格式  

  41.         log_format stream_log "$cookie_idXXXX\t$remote_addr\t$remote_user\t[$time_local]\t$request_method\t$host\t$request_uri\t"  

  42.                       "$request_time\t$status\t$body_bytes_sent\t'$http_referer'\t"  

  43.                       "'$http_user_agent'\t'$http_x_forwarded_for'\t$upstream_addr\t$upstream_response_time\t3";  

  44.           

  45.         #成功日志  

  46.         access_log  /opt/log/nginx/access.log main;  

  47.         #access_log syslog:local6:notice:log1.op.XXXXdns.org:514:nginx-main-log main;  

  48.           

  49.         #指定 nginx 是否调用 sendfile 函数(zero copy 方式)来输出文件,对于普通应用,  

  50.         #必须设为 on,如果用来进行下载等应用磁盘IO重负载应用,可设置为 off,以平衡磁盘与网络I/O处理速度,降低系统的uptime.  

  51.         sendfile        on;  

  52.         #长连接超时时间,单位是秒  

  53.         keepalive_timeout  60;  

  54.         #服务器名称哈希表的最大值(默认512)[hash%size]  

  55.         server_names_hash_max_size 1024;  

  56.         #服务器名字的hash表大小  

  57.         server_names_hash_bucket_size 256;  

  58.         #客户请求头缓冲大小   

  59.         client_header_buffer_size 4k;  

  60.         #如果header过大,它会使用large_client_header_buffers来读取  

  61.         large_client_header_buffers 4 256k;  

  62.         client_header_timeout  1m;  

  63.         client_body_timeout    1m;  

  64.         send_timeout           1m;  

  65.         #防止网络阻塞  

  66.         tcp_nopush     on;  

  67.         tcp_nodelay    on;  

  68.         #允许客户端请求的最大单文件字节数  

  69.         client_max_body_size 50m;  

  70.           

  71.         #缓冲区代理缓冲用户端请求的最大字节数  

  72.         client_body_buffer_size 50m;  

  73.           

  74.         #nginx跟后端服务器连接超时时间(代理连接超时)  

  75.         proxy_connect_timeout 5;  

  76.           

  77.         #后端服务器数据回传时间(代理发送超时)  

  78.         proxy_send_timeout 15;  

  79.           

  80.         #连接成功后,后端服务器响应时间(代理接收超时)  

  81.         proxy_read_timeout 15;  

  82.           

  83.         #设置代理服务器(nginx)保存用户头信息的缓冲区大小  

  84.         proxy_buffer_size 4k;  

  85.           

  86.         #proxy_buffers缓冲区,网页平均在32k以下的话,这样设置  

  87.         proxy_buffers 8 32k;  

  88.           

  89.         #高负荷下缓冲大小(proxy_buffers*2)  

  90.         proxy_busy_buffers_size 64k;  

  91.           

  92.         #设定缓存文件夹大小,大于这个值,将从upstream服务器传  

  93.         proxy_temp_file_write_size 64k;  

  94.         proxy_intercept_errors  on;  

  95.         #客户端放弃请求,nginx也放弃对后端的请求  

  96.         #proxy_ignore_client_abort on;  

  97.   

  98.     #代理缓存头信息最大长度[设置头部哈希表的最大值,不能小于你后端服务器设置的头部总数]  

  99.     proxy_headers_hash_max_size 512;  

  100.     #设置头部哈希表大小(默认64)[这将限制头部字段名称的长度大小,如果你使用超过64个字符的头部名可以加大这个值。]  

  101.     proxy_headers_hash_bucket_size 256;  

  102.   

  103.     #变量哈希表的最大值(默认值)  

  104.     variables_hash_max_size 512;  

  105.     #为变量哈希表制定关键字栏的大小(默认64)  

  106.     variables_hash_bucket_size 128;  

  107.           

  108.         #开启gzip压缩输出  

  109.         gzip on;  

  110.         #最小压缩文件大小  

  111.         gzip_min_length 1k;  

  112.         #压缩缓冲区  

  113.         gzip_buffers     4 16k;  

  114.         #压缩等级  

  115.         gzip_comp_level 9;  

  116.         #压缩版本(默认1.1,前端如果是squid2.5请使用1.0)  

  117.         gzip_http_version 1.0;  

  118.         #压缩类型,默认就已经包含textml  

  119.         gzip_types text/plain application/x-javascript application/json application/javascript text/css application/xml text/javascript image/gif image/png;  

  120.         gzip_vary on;  

  121.   

  122.         #map模块使用  

  123.         map_hash_max_size 102400;  

  124.         map_hash_bucket_size  256;  

  125.   

  126.         #Tengine Config  

  127.         #concat on;  

  128.         #trim on;  

  129.         #trim_css off;  

  130.         #trim_js off;  

  131.         server_tokens off;  

  132.         #footer "<!-- $remote_addr $server_addr $upstream_addr -->";  

  133.   

  134.         #rewrite_log on;  

  135.         fastcgi_intercept_errors on;  

  136.     #include other config file  

  137.         include ../conf.d/*.conf;  

  138.     #包含一些特殊站点的配置文件,此目录下文件暂时不包含在git自动管理过程中  

  139.     include ../special/*.conf;  

  140.   

  141.     #屏蔽不加主机域名的默认请求  

  142.     #server {  

  143.         #   listen *:80 default;  

  144.         #   server_name _ "";  

  145.         #   return 444;  

  146.     #}  

  147.       

  148.     #ceshi by dongange 2016-01-07  

  149.   

  150.     #Nginx状态监测模块配置  

  151.     req_status_zone server "$server_name,$server_addr:$server_port" 10M;  

  152.     req_status server;  

  153.     server {  

  154.         listen 80;  

  155.         server_name www.xxx.com;  //域名一般改成自己的

  156.         access_log /opt/log/nginx/nginx_status/status_access.log main;  

        1.  location / {

        2.             root   html;

        3.             index  index.html index.htm;

        4.         }

        5. error_page   500 502 503 504  /50x.html;

        6.         location = /50x.html {

        7.             root   html;

        8.         }

        9.   location ~ \.php$ {

        10.             root           /application/nginx/html/www;

        11.             fastcgi_pass   127.0.0.1:9000;

        12.             fastcgi_index  index.php;

        13.             fastcgi_param  SCRIPT_FILENAME /application/nginx/html/www$fastcgi_script_name;

        14.             include        fastcgi_params;

        15.         }

  157.             location /status {  

  158.                 req_status_show;  

  159.                 access_log /opt/log/nginx/nginx_status/status_access.log main;  

  160.                 allow 127.0.0.1;  //允许访问ip

  161.                 deny all;  //禁止访问ip

  162.                 }  

  163.             location /stub_status {  

  164.                 stub_status on;  

  165.                 access_log /opt/log/nginx/nginx_status_stub/status_stub_access.log main;  

  166.                 allow 127.0.0.1;  

  167.                 deny all;  

  168.             }  

  169.             location /check_status {  

  170.                 check_status;  

  171.                 access_log /opt/log/nginx/nginx_status_check/status_access_check.log main;  

  172.                 allow 127.0.0.1;  

  173.                 deny all;  

  174.             }  

  175.     }  

  176. }

        二、上面是一份常见配置根据自己需求改就好了,下面是上面没有涉及的。

              1. expires,这个是用来缓存的,比如不常改变的js,css,图片等。

            2.利用referer防止盗链,利用valid_referers..这个就可以防止盗链。

            3. 利用limit_conn_zone来控制nginx的并发连接数量,这个可以防止有人搞事。利用apache的ab工具可以测试。 

            4.控制请求nginx的速率,这个目前看来没啥luan用。

            

            expires用于客户浏览器本地缓存不常改变的js,css,图片等,配置如下:

            location ~ .*\.(gif/jpg/png)$

            {

                    expires 30d;//缓存时间

            }

             location ~ .*\.(js|css)?$

            {

                    expires 30y;//缓存时间

            }

            referer防盗链配置:

            location ~* \.(jpg|gif|mp3)$

            {
                valid_referers none blocked *.xxxx.com xxx.com;

                if ($invalid_referer)

                {

                    rewrite ^/ http://www.qita.com;

                }

            }

          限制并发连接数:

            limit_conn_zone $binary_remore_addr zone=addr:10m;(http里面写在)

            location / {

                root html;

                index index.html index.hml;

                limit_conn addr 1;//限制单ip并发连接数为1

                }

      上面是正常配置,还有一些比如fastCGI,负载均衡等

作者:xTao 分类:LNMP 浏览:2535 评论:0