NutzCN Logo
问答 nginx怎么配置拦截某些URL?
发布于 2894天前 作者 shusheng 8605 次浏览 复制 上一个帖子 下一个帖子
标签:
server {
        listen       80;
        server_name  baidu.com;
        #charset koi8-r;

        access_log  logs/ssu8.cn.access.log  main;
		location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ {
			root D:/soft/ssu8/webapps/ROOT;
			expires      30d;
		}
		
		location ~* /nutzbook/user/.*.(php|php5|PHP|PHP5|py|PY|sh|SH)$ {
            deny all;
        }

		location / {
		proxy_pass          http://localhost:8082;
		proxy_set_header    X-Real-IP $remote_addr;
		}

    }

这是我配置的,没起效果

12 回复
location ~* "^/nutzbook/user/.*.(php|php5|PHP|PHP5|py|PY|sh|SH)$" {
            return 444;
}

没作用哦,是不是要去掉工程名nutzbook?

那你在页面上的绝对地址带不带nutzbook? 不带的话, 那当然是要去掉

location ~ "/nutzbook/user/[^\/]+/[^\/]+" {
                return 605;
        }
location ~ /nutzbook/user/[^\/]+/[^\/]+ {
                return 605;
        }

网上都是这么写的,但都没有拦截到

location ~ ^/nutzbook/user/[^\/]+/[^\/]+ {
                return 605;
        }

这样的也不行

页面地址是啥

到底路径里面有没有nutzbook字样, 如果访问地址是 http://www.xyz.com/user/xxx.php 那nutzbook字样要去掉.

http://www.xyz.com/nutzbook/user/xxx.php

这样的,有的

我主动写了个拦截器,将所有不让用户访问的URL都拦截了,这样会消耗一些服务器性能

这是唯一一个server节点吗? 是不是根本没走这个节点

server_name  baidu.com;

每个server的名称都是不同的

所以我猜就是没匹配上这个server节点,所以location才不生效

添加回复
请先登陆
回到顶部