我一直在为我的两个 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 的错误,如下所示:
我应该在哪里更改我的配置以及如何更改?
感谢您的帮助!