当你运行nginx作为apache的反向代理服务器时,我遇到了常见的问题,我想在nginx conf中添加双个proxy_pass变量。文件但是nginx似乎不允许这样做。
例如我所拥有的情况 在我的网站上我有通过openfire运行的聊天引擎,它在端口5280上运行Jetty并且我已将apache代理传递指令设置为
ProxyPass /member-chat http://xyx.com:5280/http-bind
ProxyPassreverse /member-chat http://xyx.com:5280/http-bind
ProxyRequests Off
但是我希望将任何来自“/ member-chat”的内容直接发送到聊天服务器而不是apache,因为那时apache会做什么再次代理传递到openfire(成员聊天) ,这需要更多的时间和无用的加载apache。
当我添加nginx作为代理服务器我想在下面添加如下但是这不起作用,由于某种原因,它无法找到该位置给我404错误。
location / {
proxy_pass http://85.xxx.yyy.2x2:7080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
access_log off;
}
location ~ ^/member-chat {
proxy_pass http://85.xxx.yyy.2x2:5280;
proxy_connect_timeout 300;
}
答案 0 :(得分:1)
我相信你错过了为Jetty服务指定URI的方法。使用当前配置,将在Jetty端口上发出的请求将是:
http://85.xxx.yyy.2x2:5280/member-chat
这符合proxy_pass文档。
如果指定了proxy_pass而没有URI,请求URI将以与处理原始请求时客户端发送的格式相同的形式传递给服务器,或者在处理更改的URI时传递完整的规范化请求URI
我不认为这是您期望查看Apache配置的内容。尝试像为Apache一样为proxy_pass指令配置URI。
location ~ ^/member-chat {
proxy_pass http://85.xxx.yyy.2x2:5280/http-bind;
proxy_connect_timeout 300;
}