Nginx
反向代理的设置
proxy_set_header 的用法
问题:proxy_pass 的DNS解析有缓存
本文档使用 MrDoc 发布
-
+
首页
反向代理的设置
### 概述 一般来说,我们的反向代理的配置都是这样的: ``` location /api { proxy_pass http://backend.com; } ``` 但是这个配置会有一个问题: >s 经过反向代理后,由于在客户端和服务端之间增加了一层反向代理服务器,因此服务端无法获取到客户端的IP,通过`$remote_addr` 拿到的是反向代理服务器的IP地址经过反向代理后,由于在客户端和服务端之间增加了一层反向代理服务器,因此服务端无法获取到客户端的IP,通过`$remote_addr` 拿到的是反向代理服务器的IP地址 为了解决这个问题,我们需要在反向代理中增加一个配置: ``` proxy_set_header X-Real-IP $remote_addr; ``` 但这里也会有问题,如果经过了多层反向代理,那么`X-Real-IP`最终的值可能是上一节点的地址,而并不是客户端的地址。这时,我们还有另一个参数可用: ``` proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; ``` 如果请求经过了多层代理,包括正向代理和反向代理,`X-Forwarded-For`会记录每一跳的地址。 ### 综述 所以最终我们的nginx配置应该是这样的: ``` location /api { proxy_pass http://backend.com; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } ``` > 至于Host字段,则不需要设置,因为默认情况下,nginx会将Host字段设置为`$proxy_host`,也就是真正的后端地址,这是正确的,一般来说我们不需要将Host设置为`$Host`,这是原始请求的域名,这往往与真正的后端域名并不一致。
gaojian
2021年11月1日 11:31
分享文档
收藏文档
上一篇
下一篇
微信扫一扫
复制链接
手机扫一扫进行分享
复制链接
关于 MrDoc
觅思文档MrDoc
是
州的先生
开发并开源的在线文档系统,其适合作为个人和小型团队的云笔记、文档和知识库管理工具。
如果觅思文档给你或你的团队带来了帮助,欢迎对作者进行一些打赏捐助,这将有力支持作者持续投入精力更新和维护觅思文档,感谢你的捐助!
>>>捐助鸣谢列表
微信
支付宝
QQ
PayPal
Markdown文件
分享
链接
类型
密码
更新密码