Nginx域解析问题

时间:2018-10-11 08:05:35

标签: nginx dns proxypass upstream-branch

我有一个代理服务器,该服务器通过https将通信重定向到客户方的某些api。当我使用带有设置的上游变量(proxy_pass $ upstream_endpoint $ request_uri;)的配置时,针对该域的DNS解析(动态更改IP地址)运行良好,但是我收到未经授权的响应403。

当我使用不带上游(proxy_pass https://api-test.example.com/api/)的配置时,直接指向客户域即可正常工作,我收到响应200,但DNS解析器不再起作用。.

Nginx配置:

location /api-test.example.com/api/ {
            resolver 10.100.10.1 valid=5s;
            set $upstream_endpoint https://api-test.example.com;
            proxy_pass $upstream_endpoint$request_uri;
            #proxy_pass https://api-test.example.com/api/;
            proxy_ssl_name api-test.example.com;
            proxy_ssl_server_name on;
            proxy_set_header Host api-test.example.com;
            proxy_set_header X-Forwarded-Proto https;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

1 个答案:

答案 0 :(得分:0)

通过将URI添加到proxy_pass语句中,在将请求的URI传递到上游之前对其进行了重写。有关详细信息,请参见this docuement

因此URI /api-test.example.com/api/foo被重写为/api/foo

您可以使用rewrite...break语句来实现相同的行为。有关详细信息,请参见this document

location /api-test.example.com/api/ {
    rewrite ^/api-test.example.com(.*)$ $1 break;
    set $upstream_endpoint https://api-test.example.com;
    proxy_pass $upstream_endpoint;
    ...
}