在nginx中,如何设置proxy_pass
以便它发送到正确的客户端远程IP地址?目前,只显示服务器的IP。我知道正确的方法是
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
然而,另一方面,我有一个不是我写的支持系统。我不想更改所有代码以适合X-Forwarded-For
参数。
如何告诉nginx以格式发送$remote_addr
,以便$_SERVER['REMOTE_ADDR']
可以阅读?
答案 0 :(得分:1)
如果您代理到apache 2.4服务器,则可以使用模块mod_remoteip。由于这些指令,它会将标题X-Forwarded-For“转换”为Remote-Addr标题,这里有一个例子:
#### Set that the Remote IP comes from the header X-Forwared-for
RemoteIPHeader X-Forwarded-For
#### Trust the proxy at localhost
RemoteIPTrustedProxy 127.0.0.1
#### Trust the proxy with the address range from 192.168.15.0 to 192.168.15.255
RemoteIPTrustedProxy 192.168.15.0/24
答案 1 :(得分:0)
proxy_set_header REMOTE_ADDR $remote_addr;
无法在nginx proxy_pass(link)
因此,您必须为您的应用程序准备一些中间件。 例如,伪代码:
class RemoteAddrMiddleware(request)
def process_request(request):
if request['REMOTE_ADDR'].blank?
request['REMOTE_ADDR'] = request['X-Forwarded-For']
end
end
end
答案 2 :(得分:0)
在apache 2.2中,您也可以使用libapache2-mod-rpaf。