【Nginx】Nginx反向代理轉發Host設置


#事故現場:

  服務器A(Nginx服務器):192.168.2.126

  服務器B(Web服務器):192.168.2.221

  服務器A反向代理服務器B,A配置了upstream為:

復制代碼
http {
  upstream test_server {
    server 192.168.2.221:8080 weight=1 max_fails=3 fail_timeout=30s;
  }
}
復制代碼

  用瀏覽器訪問A:192.168.2.126 在服務端獲取Host,結果為:test_server ,而我想得到的是:192.168.2.221

context.Request.Headers.Get("Host");// text_server
context.Request.ServerVariables["SERVER_NAME"]; // text_server

#原因及解決方案:

  默認情況下反向代理是不會轉發請求中的Host頭部,如果需要轉發,則需要配置紅色字體表示的選項參數。

復制代碼
location /test {
            proxy_set_header  Host  $host;
            proxy_set_header  X-real-ip $remote_addr;
            proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;

            proxy_pass http://192.168.2.12:5252/test;
}
復制代碼

#如果不修改Nginx配置,那服務端代碼如何獲取原始Host呢?

以asp.net代碼為例:

HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_HOST"];

#參考:https://www.cnblogs.com/yshyee/p/7531264.html

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM