Aristotle
发布于 2023-03-15 / 3 阅读 / 0 评论 / 0 点赞

关于nginx反向代理后端服务有关重定向问题的几个澄清

关于nginx反向代理后端服务有关重定向问题的几个澄清

1.重顶向的url的生成是后端服务处理的。

拿java程序举例,servlet api的request的 scheme ,serverName,port contextPath是从url中获取的,这就导致丢失了源发起方的对应信息。于是nginx有几个请求头 proxy_set_header xxx, 有几项是与此相关的。在后端处理请求的时候,需要综合考虑到服务可能被反向代理的需求。

2.很有可能在反向代理后,后台没有按照常规正确拼写重定向url。于是,nginx的 proxy_redirect指令就派上用场,用于改写后端301,302重定向,多个proxy_redirect共存,匹配最长的url,进行替换,然后继续响应到前端。这就是问什么我为什么没有正确处理重定向问题,导致302重定向丢失端口号。多添加几个proxy_redirect,以便涵盖后端的url拼写方式。