Nginx

NGINX 反向代理暴露後端伺服器 IP 地址和協議

  • March 9, 2019

我們在 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 地址。在第三個中,瀏覽器警告從 HTTP 切換到 HTTP,然後再次切換回 HTTPS,然後顯示結果頁面。

這種行為就像瀏覽器被重定向到後端伺服器一樣。

NGINX 文件沒有提到這樣的內容。問題 750605具有類似的配置,但僅嘗試重定向。

這原來是 Unix/Linux 問題Nginx 反向代理重定向的副本。

答案的關鍵部分是

proxy_set_header Referer $http_referer;

將設置Referer發送到我的搜尋引擎的欄位。顯然,發送到瀏覽器的響應取決於搜尋引擎響應中的標題,我需要更好地理解。

引用自:https://serverfault.com/questions/957422