如何强制Spring引导重定向到https而不是http?
我使用Spring Boot+Spring Security。我们在生产中使用如何强制Spring引导重定向到https而不是http?,spring,configuration,spring-security,spring-boot,Spring,Configuration,Spring Security,Spring Boot,我使用Spring Boot+Spring Security。我们在生产中使用nginx,将proxy\u请求传递给我们的应用程序。问题是应用程序重定向到http,而不是https(当用户注销时) 如何强制Spring在production env上重定向到https,而在dev env上仍然重定向到http?问题是,nginx最常通过http与你的应用交谈,而应用认为(正确地)请求是为了http URL,因此在计算重定向URL时,它也会以http结束。有多种方法可以解决这个问题 快速的谷歌搜索
nginx
,将proxy\u请求传递给我们的应用程序。问题是应用程序重定向到http
,而不是https
(当用户注销时)
如何强制Spring在production env上重定向到https
,而在dev env上仍然重定向到http
?问题是,nginx最常通过http与你的应用交谈,而应用认为(正确地)请求是为了http URL,因此在计算重定向URL时,它也会以http结束。有多种方法可以解决这个问题
快速的谷歌搜索似乎表明nginx有一个AJP模块。也许你可以用它代替HTTP代理?这可能会解决这个问题,因为nginx和应用程序之间没有HTTP流量(因此没有HTTPS->HTTP开关)
另一种方法是在nginx中设置X-Forwarded-Proto头,我认为最好的解决方案是打开
server.tomcat.remote_ip_header=x-forwarded-for
server.tomcat.protocol_header=x-forwarded-proto
在嵌入式tomcat中,让spring编写正确的重定向头
确保在nginx.conf中包含配置,如:
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $server_name;
proxy_set_header X-Forwarded-Proto $scheme;
但请确保您的nginx位于server.tomcat.internal_proxies
的地址范围内,否则您必须更改该范围(例如,在使用docker机器和容器链接时,这是必要的)