注册 登录  
 加关注
查看详情
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

曾国藩的博客

 
 
 

日志

 
 

nginx简单配置功能样例  

2014-05-26 10:21:34|  分类: 网络/系统架构/版 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

http://www.2tutu.com/post/2013/1474.html

贴一个自己写着玩的配置文件样例,作为备忘吧。以后万一有用。

 

user  nginx;

worker_processes  2;


error_log  logs/error.log;

#error_log  logs/error.log  notice;

#error_log  logs/error.log  info;


pid        var/nginx.pid;


events {

    worker_connections  1024;

}


http {

    include       mime.types;

    default_type  application/octet-stream;


    #用GEO做个访问表,对除此以外的ip进行访问量限制

    #在ACL里的地址$limit=0,否则$limit=1

    geo $limit{

        default 1;

        #admin

        192.168.1.0/24 0;

        127.0.0.1/32 0;

    }

    

    #将上述ACL匹配结果映射到二进制地址上,二进制地址比字符串地址占空间小

    map $limit $b_remote_addr {

        1 $binary_remote_addr;

        0 "";

    }


    #连接频率限制,10M的哈希表,连接速度20个/秒

    #limit_req_zone $binary_remote_addr zone=freq_ip:10m rate=20r/s;

    limit_req_zone $b_remote_addr zone=freq_ip:10m rate=20r/s;


    #并发连接限制,10M的哈希表

    #limit_conn_zone $binary_remote_addr zone=per_ip:10m;

    limit_conn_zone $b_remote_addr zone=per_ip:10m;


    #隐藏nginx版本

    server_tokens off;


    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '

                      '$status $body_bytes_sent "$http_referer" '

                      '"$http_user_agent" "$http_x_forwarded_for"';


    access_log  logs/access.log  main;


    sendfile        on;

    #tcp_nopush     on;


    #keepalive_timeout  0;

    keepalive_timeout  65;

    port_in_redirect off;


    #将大写的url一律转成小写

    perl_set $url '

    sub {

        my $r = shift;

        my $re = lc($r->uri);

        return $re;

    }';


    #gzip  on;


    #如果需要的话,设置一个缺省的主机

    #对于没有绑定主机头的访问,一律返回404并不记录日志

#    server {

#        listen 80 default_server;

#        server_name _;

#        return 404;

#        access_log off;

#    }


    server {

        listen       8080;

        server_name  192.168.1.20 localhost;


        #charset koi8-r;


        root           /www;


        #连接频率限制,每秒20次,burst为5

        limit_req zone=freq_ip burst=5 nodelay;


        #每IP的并发连接数限制

        limit_conn per_ip 20;

        #每IP的速率限制

        limit_rate 500k;


        #前端有varnishd,将客户端IP写在X-FORWARDED-FOR里

        #这里将X-FORWARDED-FOR作为真实IP

        set_real_ip_from   127.0.0.1;

        real_ip_header     X-Forwarded-For;


        #access_log  logs/host.access.log  main;


        #可能的SQL注入,在URL参数中屏蔽到一些特殊字符

        if ( $query_string ~* ".*[\;'\<\>].*" ){

            return 404;

        }


        #将www.的访问转向不带www的站点

        if ($host ~* www.2tutu.com)

        {

            rewrite ^/(.*)$ http://2tutu.com/$1 permanent;

        }


        #URL大写转小写

        if ($uri ~ [A-Z]){

            rewrite ^(.*)$ $url last;

        }


        #判断是否存在所请求的php文件,如果没有返回403

        location ~* .*\.php($|/)

        {

            if ($request_filename ~* (.*)\.php) {

                set $php_url $1;

            }

            if (!-e $php_url.php) {

                #文件不存在

                return 403;

            }

        }


        #禁止访问.ht开头的,比如.htaccess

        location ~* /\.ht {

            deny all;

        }


        #阻止访问特定目录里的可执行脚本

        location ~* /.*(attachments|upload).*/.*\.(php|php5|pl|perl|sh)?$ {

            deny all;

        }

       

        #仅允许部分IP访问特定目录里的可执行脚本

        location ~* /.*(admin|xcache).*/.*\.(php|php5|pl|perl|sh)?$ {

            #配置是有重复的,比如这里的try_files,其实前面已经有过判断

            try_files $uri =404;

            allow 192.168.1.0/24;

            allow 127.0.0.1;

            deny all;

            fastcgi_pass   127.0.0.1:10080;

            fastcgi_index  index.php;

            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;

            include        fastcgi_params;            

        } 


        #只允许部分IP访问特定的目录

        location ~* /(admin|xcache)/.*?$ {

            allow 192.168.1.0/24;

            allow 127.0.0.1;

            deny all;

            index  index.html index.htm index.php;

        }


        #nginx的状态页

        location /nstat {

            stub_status on;

            access_log   off;

            error_log    off;

            allow 192.168.1.0/24;

            allow 127.0.0.1;

            deny all;

        }


        #给varnish一个状态页,vstat.txt为varnishstat的输出

        location /varnish {

            rewrite ^(.*) /vstat.txt break;

            access_log   off;

            error_log    off;

            allow 192.168.1.0/24;

            allow 127.0.0.1;

            deny all;

        }


        #给fpm一个状态页,将fpm的访问交给php-fpm

        location /fpm {

            access_log   off;

            error_log    off;

            allow 192.168.1.0/24;

            allow 127.0.0.1;

            deny all;

            fastcgi_pass   127.0.0.1:10080;

            fastcgi_index  index.php;

            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;

            include        fastcgi_params;        

        }


        #设定一个PHP健康检查页面,不记录日志

        location ~* ^/(health_check\.php)$ {

            try_files $uri =404;

            access_log   off;

            error_log    off;

            allow 127.0.0.1;

            deny all;

            fastcgi_pass   127.0.0.1:10080;

            fastcgi_index  index.php;

            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;

            include        fastcgi_params;        

        }


        #对jpg等文件检查referer

        location ~* \.(jpg|png|gif)$ {

             valid_referers none blocked 2tutu.com *.2tutu.com;

             if ($invalid_referer) {

                return   403;

            }

        }

        

        

        location / {

            root   /www;

            index  index.html index.htm index.php;

        }


        error_page   500 502 503 504  /50x.html;

        location = /50x.html {

            root   /www;

        }

        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000

        #

        location ~* \.php$ {

            try_files $uri =404;

            fastcgi_pass   127.0.0.1:10080;

            fastcgi_index  index.php;

            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;

            include        fastcgi_params;

        }

    }

}

  评论这张
 
阅读(517)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018