我一起使用tomcat和Nginx来提供我的Web应用程序.
Nginx侦听端口8085并将请求转发给在端口8084上运行的tomcat.
如果我进行如下重定向:
@RequestMapping("/test")
public String test() {
return "redirect:/";
}
页面被重定向到端口8084(Tomcat端口)而不是Nginx端口(8085).
如何重定向到所需的端口?
编辑:
我的Nginx配置与此类似:
server {
listen 8085;
server_name www.mydomain.com;
location /{
proxy_pass http://127.0.0.1:8084;
include /etc/Nginx/conf.d/proxy.conf;
}
}
/etc/Nginx/conf.d/proxy.conf的内容和内容:
proxy_redirect off;
proxy_set_header Host $host:$proxy_port;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
client_max_body_size 8m;
client_body_buffer_size 256k;
proxy_connect_timeout 120;
proxy_send_timeout 120;
proxy_read_timeout 120;
proxy_buffer_size 4k;
proxy_buffers 32 256k;
proxy_busy_buffers_size 512k;
proxy_temp_file_write_size 256k;
解决方法:
在配置中使用$server_port而不是$proxy_port部分.
改变这一行
proxy_set_header Host $host:$proxy_port;
至
proxy_set_header Host $host:$server_port;
Catalina的HttpServletResponse.sendRedirect实现使用getServerPort方法构建绝对重定向URL(Location Header-Value). getServerPort返回以下部分:来自请求的HostHeader-Value,在你的情况下必须是8085.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。