我有以下 NGINX 配置
events {}
http {
access_log /dev/stdout;
error_log /dev/stderr;
resolver 1.1.1.1 1.0.0.1 valid=5s ipv6=off; # CloudFlare DNS resolver
upstream myupstream {
server xyz.appspot.com:443;
}
server {
server_name www. mywebsite.com;
listen 80;
set $myupstream "xyz.appspot.com:443";
location ^~ /mypath/ {
proxy_pass https://myupstream/theirpath/; # <-------- Case A - proxy_pass via UPSTREAM
proxy_pass https://$myupstream/theirpath/; # <-------- Case B - proxy_pass via VARIABLE
proxy_set_header Host "$myupstream";
}
}
}
# TEST_URL: http://www.mywebsite.com/mypath/framework.js
# DESTINATION_URL: https://xyz.appspot.com:443/theirpath/framework.js
问题出现在行proxy_pass
中
当我使用案例 A ✅ ...
... proxy_pass via UPSTREAM ... TEST_URLContent-Type: application/javascript
按预期返回正确的标头
当我使用案例 B ❌ ...
... proxy_pass via VARIABLE ... TEST_URL 返回不正确的 header Content-Type: text/html
。
这会导致浏览器渲染错误。
如何确保“Case B”像“Case A”一样正确返回?
我确保 DESTINATION_URLContent-Type: application/javascript
每次都正确返回。