我有一个代理服务器,它通过https将通信重定向到客户端的一些api。当我使用带有设置的上游变量( DNS $upstream_endpoint$request_uri;)的配置时,该域(动态更改IP地址)的域名解析工作正常,但我得到的响应是403 unauthorized。
当我使用没有上游(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;发布于 2018-10-11 16:56:21
通过向proxy_pass语句添加URI,请求的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;
...
}https://stackoverflow.com/questions/52755160
复制相似问题