NGINX - 仅代理特定的 URL

NGINX - 仅代理特定的 URL

首先,我必须承认我对 NGINX 完全是菜鸟。我只用它做过一些非常基础的工作。

现在的情况是这样的。我们在 DMZ 中有一个反向代理盒,它接收传入的连接/请求并“将它们发送”到目的地。目前,其中一个只允许将来自特定子网的连接转发到特定的 Web 服务器。这是为了让 VPN 用户重置特定的应用程序密码。不幸的是,它会转发对该 Web 服务器 URL 的任何请求。

我想要的是:我需要锁定它。而不是传递“https://webserver.com/whatever_they_type“对于服务器,我想要阻止除单个特定 URL 之外的所有内容。例如:”https://webserver.com/this-url/only“其他一切都会被阻止。

有人想过如何修改 NGINX 中的位置来实现这一点吗?


想知道这样的事情是否会有效?

    location = /good_page/reset_password.html {
            proxy_pass https://1.2.3.4:443;
            #### Set headers ####
            proxy_set_header Host webserver.com;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            #### Only allow OpenVPN networks ###
            allow 5.6.7.8/24;
            deny all;
    }


    location ^~ /good_page {
            deny all;
    }

答案1

Ngnix 总是首先尝试匹配最具体的前缀位置,因此您可以设置两个位置:

    server {
       listen       80;
       server_name example.com www.example.com;
       access_log  /<access log file>  main;
       error_log  /<error log file>  error;

       # This is optional (any location)
       location / {
         # You can set a index.html with an error message
         root /path/folder;
       }
       # Specific prefix
       location /this-url/only/ {
          proxy_pass http://<your server IP>;
          <proxy configurations ...>;
       }
     }

笔记:当您访问http://example.com/this-url/only/nginx 转发到您的服务器 http:///this-url/only/如果您需要删除 /this-url/only/,您需要重写规则。

Nginx 文档

相关内容