Nginx重写规则:只能从一个地址访问目录

时间:2014-09-18 22:55:21

标签: nginx url-rewriting webserver rewrite modx

我使用Nginx作为Web服务器,我想拒绝访问某些域中的特定目录。或者换句话说,只能从一个域或IP地址访问该路径/目录。

示例:

  

http://domain.com/manager/ =>重定向到404页

     

http://www.domain.com/manager/ =>重定向到404页

     

http://10.10.10.10/manager/ =>允许访问

最后,为了使其成为一个完整的解决方案,我想在访问此特定路径时强制使用https连接。

按照我之前的例子:

  

http://10.10.10.10/manager/ =>重写为https

3 个答案:

答案 0 :(得分:0)

使用

location / {
deny all;
allow [ip];
}

然后重启您的服务。

更多:http://nginx.org/en/docs/http/ngx_http_access_module.html

答案 1 :(得分:0)

解决力https(假设你已经有一个侦听端口443的nginx)

server {
    listen 80;
    server_name  10.10.10.10;

    rewrite ^(.*) https://10.10.10.10$1 permanent;
}

要解决重定向到404的问题,您可以考虑在主配置中使用以下内容来侦听服务器" domain.com"

location ~ ^/manager {
    return 404;
}

答案 2 :(得分:0)

这就是我想要的:

server {
    listen          80;
    server_name     domain.com;

    # Redirect path to secure connection
    location ^~ /manager {
      rewrite ^/(.*) https://domain.com$1 permanent;
    }
}

server {
    listen 443;

    location ^~ /manager {
      allow 10.10.10.10;
      deny all;

      error_page 403 =404 /404.html;  
    }
}