微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Spring MVC“redirect:/”前缀重定向,包含端口号

我一起使用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] 举报,一经查实,本站将立刻删除。

相关推荐