apache-2.2 – 来自后端的301的nginx负载均衡问题
我遇到了一个奇怪的问题,我不确定它是配置问题还是nginx中的错误.我的设置是一个nginx反向代理,它有Apache2后端服务器.负载平衡器非常基本类似于example from the wiki,例如简化:
现在,例如当我尝试在Apache中请求目录时,会出现问题,而在URL的末尾没有尾部斜杠.例如,客户端请求:
Apache将使用HTTP 302进行回复以将客户端重定向到
注意,url最后有一个斜杠,注意它是一个目录.另请注意,通过在重定向标头中使用传入请求主机名,Apache是??“智能”的.到目前为止都很好.但是,当使用具有负载平衡的nginx时,将301发送到客户端,而不将nginx上游名称转换回实际的服务器/域.所以客户将收到以下内容:
myproject是nginx上游后端的名称.它不是客户端可以解析的实际主机.在我看来,客户端应该被重定向到
即应该在响应头中替换上游后端的名称.这是nginx中的错误还是我做错了什么? 最佳答案
原来nginx有很多proxy redirect选项来处理这类问题.我最终使用了这样的东西:
这基本上用$host替换了上游名称并删除了端口.这在我的情况下工作,因为我在HTTP / HTTPS的默认端口上托管nginx.如果nginx在非默认端口上运行,则需要这样的东西:
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |