[英]nginx behind haproxy to static html ssl getting real IP address
[英]Forward Real Client IP from Nginx to Haproxy
我的切入點是 Nginx。 對於所有 /api 請求,我已經設置了 haproxy。 當有人試圖點擊https://yourdomain.com/api/時,我想將客戶端 IP 地址從 nginx 發送到 haproxy。 我已經為 /api 定義了一個位置並定義了以下標題
location /api/ {
proxy_pass https://MY-API-URL/;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass_request_headers on;
}
當我獲得 X-Real-IP 的值時,它是客戶端 IP,但我希望這個客戶端 IP 存在於 Haproxy 中,因為我想根據客戶端 IP 設置速率限制。 請讓我知道什么是正確的做法。
當您從 NGginx 代理到 Haproxy 時,所有連接都來自同一 ip/machine (nginx)。 如果您想根據客戶端的 IP 進行代理,那么您必須告訴 HAProxy 根據您在 Nginx 中設置的 X-Real-IP 或 X-Forwarded-For 標頭進行平衡。
您的新 Nginx 配置將如下所示:
location /{
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; ( if use X-Forwarded-For )
proxy_set_header X-Forwarded-Proto https;
proxy_set_header X-Real-IP $remote_addr; ( if use X-Real-IP )
proxy_pass_request_headers on;
proxy_pass http://myip:myport;
}
如果您使用 X-Real-IP,您的新 HAProxy 配置將如下所示:
backend webapp
balance hdr(X-Real-IP)
hash-type consistent
mode http
server server1 ip:port check port 8080
server server2 ip:port check port 8080
如果您使用 X-Forwarded-For,您的新 HAProxy 配置將如下所示:
backend webapp
balance hdr(X-Forwarded-For)
hash-type consistent
mode http
server server1 ip:port check port 8080
server server2 ip:port check port 8080
這個配置對我來說很好用! 問候
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.