nginx拒绝不使用return

时间:2017-06-02 19:02:07

标签: nginx

我试图拒绝某个服务器块上的所有访问权限。

server {
    listen 8080;
    server_name myserver;
    root /srv/nkosl;

    deny all;

    location /mydistro {
            return 302 https://www.ubuntu.com/;
    }

    location /files {
            autoindex on;
    }
}

这会拒绝访问文件位置(并成功返回403禁止的消息)。

但是我仍然可以访问myserver:8080 / mydistro并将它重定向到ubuntu页面。

我如何拒绝/ mydistro位置?

2 个答案:

答案 0 :(得分:0)

尝试完全删除/mydistro位置。或者,至少,对return 302 https://www.ubuntu.com/;行进行评论。

要有选择地重定向,请尝试以下方法:

location /mydistro {
    if ($remote_addr != 127.0.0.1) {
        rewrite ^ https://www.ubuntu.com;
    }
}

答案 1 :(得分:0)

this answer描述了为什么allow / denyreturn / rewrite不兼容的原因。

解决此问题的一种方法确实是使用if,但是在某些情况下if在nginx中可能会很棘手,并且allow / deny也可以使用网络掩码...