当前位置: 主页 > 性能调优 >

nginx针对目录进行IP限制

时间:2013-05-23 09:35来源:www.80sa.org 作者:admin 点击:
nginx针对目录进行IP限制 最近由于工作,需要对某个目录做IP限制, 只允许指定的IP方可进行访问。在网上找了下资料, 发现nginx配置中正则的优先级高于普通限制, 因此需将限定的目
欢迎大家分享自己的文档,请点击查阅:分享方法,Linux系统运维
如果你喜欢这文章,可以点击文章结尾处百度分享,分享到你的各种社区收藏,或推荐给朋友……


nginx针对目录进行IP限制
 
最近由于工作,需要对某个目录做IP限制, 只允许指定的IP方可进行访问。在网上找了下资料, 
发现nginx配置中正则的优先级高于普通限制, 因此需将限定的目录使用正则来指定,否则对
该目录下的php无法禁止。 同时需在其中再次加入对php的解析指定, 以完成对该目录下php正常解析。
 
server {
             listen       80;
             server_name example.com;
             access_log logs/access.log main;
 
              location / {
                              root   html;
                                index index.php index.html index.htm;
                           }
 
location ~ ^/download/ {
            allow 192.168.1.0/24;
            deny all;
            location ~ .*\.(php|php5)?$ {
            root /var/mailapp/nginx/html;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index index.php;
  
 
 
 
          include        fastcgi_params;
                }
            }
location ~ .*\.(php|php5)?$ {
                       root /opt/nginx/html;
                       fastcgi_pass   127.0.0.1:9000;
                       fastcgi_index index.php;
                       include        fastcgi_params;
                       }
                 }
 
    
但在使用后发现指定IP对于该目录下的网页采用全路径访问正常,但无法使用缺省值来访问首页。 经检查发现问题仍来自于正则的优先级高于普通配置上。
 
在前面的配置中,location ~ ^/download/使用正则, 优先级高于location /的配置,所以nginx无法对首页进行解析。知道原因后拿就好办了,我们只
需在location ~ ^/download/里面加入index index.php index.html index.htm即可。因此最后配置为:
 
server {
        listen       80;
        server_name example.com;
        access_log logs/access.log main;
        location / {
        root   html;
        index index.php index.html index.htm;
        }
              location ~ ^/download/ {
                                allow 192.168.1.0/24;
                                deny all;
                                index index.php index.do index.html index.htm;
                                location ~ .*\.(php|php5)?$ {
                                        root /var/mailapp/nginx/html;
                                        fastcgi_pass   127.0.0.1:9000;
                                        fastcgi_index index.php;
                                        include        fastcgi_params;
                                }
                        }
 
 
location ~ .*\.(php|php5)?$ {
                      root /opt/nginx/html;
                      astcgi_pass   127.0.0.1:9000;
                      fastcgi_index index.php;
                      include        fastcgi_params;
                      }
 
 
 
 
 
 
限制指定的连接只允许 某个指定的IP 能行访问
http://www.80sa.org/w/index.php?s=/Admin
我要限制 这个地址只有指定的IP  能访问 ,怎么设置 ?
location /w/index.php?s=/Admin/Public/login
            {
            allow 111.111.111.111;
            deny all;
            }
 
 
 
我这样设置后
        location ~ ^/(index.php/)?admin {
                allow 192.168.1.0/24;
                deny all;
        }
 
在192.168.1.0网段 访问 报404 错误 
 
 
 
 
 
 

转载请注明linux系统运维
http://www.linuxyw.com/linux/tiaoyou/20130523/436.html

------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
验证码: 点击我更换图片
栏目列表
推荐内容