1

我有以下 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每次都正确返回。

4

0 回答 0