Nginx 反向代理引用 HTTP 标头仅适用于第一个 GET 请求

Nginx 反向代理引用 HTTP 标头仅适用于第一个 GET 请求

我一直在为我的两个 Nginx 服务器而苦苦挣扎,搜索了很多次,但没有成功。

场景如下:

我有一个后端服务器,上面有一个第三方应用程序和一个预配置的 Nginx,独立运行良好。但现在我想添加一个反向代理来向用户隐藏此服务器。当我使用我自己配置​​的两个 Nginx 进行测试时,一切正常,但当我将流量从代理服务器路由到后端服务器时,只有网站的一些内容会加载到浏览器中。

我注意到的唯一区别是,每当我直接连接到后端服务器时,我都可以在access.log后端服务器中看到以下内容:

10.251.100.3 - - [08/Jul/2019:14:13:53 +0430] "GET /some/path/2 HTTP/1.1" 200 2762 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36" "-" "backend.server.com"
10.251.100.3 - - [08/Jul/2019:14:13:54 +0430] "GET /some/uri/file.css HTTP/1.1" 200 37276 "https://backend.server.com/some/path/2" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36" "-" "backend.server.com"

但是当我通过代理服务器访问后端服务器时,我看到:

10.251.100.4 - - [08/Jul/2019:14:18:27 +0430] "GET / HTTP/1.0" 200 17624 "https://backend.server.com" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36" "-" "backend.server.com"
10.251.100.3 - - [08/Jul/2019:14:18:29 +0430] "GET /some/uri/file.css HTTP/1.1" 200 37276 "https://server.com/proxy" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36" "-" "backend.server.com"

我确实添加了proxy_set_header Refer "https://backend.server.com"代理服务器位置指令,但似乎没有改变任何东西。如您所见,它只是发送第一个 GET 请求的 HTTP 引用者,而不会更改后续请求。

以下是我的代理服务器的 Nginx 配置。

                server {

        listen 443;
        server_name server.com;

        ssl_certificate           /etc/nginx/cert.crt;
        ssl_certificate_key       /etc/nginx/cert.key;

        ssl on;
        ssl_session_cache  builtin:1000  shared:SSL:10m;
        ssl_protocols  TLSv1 TLSv1.1 TLSv1.2;
        ssl_ciphers HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4;
        ssl_prefer_server_ciphers on;
        gzip  on;
        gzip_min_length 1000;
        gzip_proxied no-cache no-store private expired auth;
        gzip_types text/plain text/css application/javascript text/javascript text/xml application/xml application/json;
        gunzip on;


        access_log /var/log/nginx/secure.access.log;
        error_log /var/log/nginx/secure.error.log debug;
        location /proxy {
             proxy_set_header Referer "https://backend.server.com";
             proxy_pass https://backend.server.com/;
             proxy_set_header Host backend.server.com;
             proxy_set_header X-Forwarded-For "-";
             gzip_static on;
             #proxy_connect_timeout      18000;
             #proxy_send_timeout         18000;
             #proxy_read_timeout         18000;
             add_header Referer "https://backend.server.com/";
             }

    }

编辑

我注意到客户端浏览器中存在有关 CORS 的错误,如下所示:

错误图片链接

我应该在哪里更改我的配置以及如何更改?

感谢您的帮助!

相关内容