NGINX 反向代理公开后端服务器 IP 地址和协议

NGINX 反向代理公开后端服务器 IP 地址和协议

code.kx.com 上的文档服务器使用 CentOS 下的 NGINX 1.12.2 来提供静态 HTML。防火墙仅允许 SSH、HTTP、HTTPS。我们的自定义搜索引擎在同一台机器上的端口 5023 上作为 HTTP 服务器运行。

NGINX 配置文件将 HTTP 重定向到 HTTPS。

server {
    listen 80 default_server;
    listen [::]:80 default_server;
    server_name code.kx.com;
    return 301 https://$server_name$request_uri;
}

它还通过 HTTP 将搜索请求反向代理到搜索引擎,然后返回 HTML。

# Reverse-proxy to kxsearch-v2 service * 2018.12.21
location /v2/search {
    proxy_pass http://127.0.0.1:5023/q/search;
}

HTTP 响应来自 code.kx.com:80,如下所示

curl -i https://code.kx.com/v2/search?query=iasc

问题来自三个不同公司代理服务器的访问者报告称,他们看到搜索引擎的 IP 地址暴露了。(当然,它与 code.kx.com 的 IP 地址相同。)在两种情况下,他们的代理服务器拒绝访问该 IP 地址。在第三种情况下,浏览器会提醒从 HTTPs 切换到 HTTP,然后再次提醒切换回 HTTPS,然后显示结果页面。

这种行为就像是浏览器被重定向到后端服务器一样。

NGINX 文档没有提到任何类似的事情。问题 750605具有类似的配置,但仅尝试重定向。

答案1

事实证明这是 Unix/Linux 问题的重复Nginx 反向代理重定向

答案的关键部分是

proxy_set_header Referer $http_referer;

设置Referer字段发送到我的搜索引擎。显然,发送到浏览器的响应取决于搜索引擎响应中的标头,我需要更好地理解这一点。

相关内容