Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何强制Spring引导重定向到https而不是http?_Spring_Configuration_Spring Security_Spring Boot - Fatal编程技术网

如何强制Spring引导重定向到https而不是http?

如何强制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结束。有多种方法可以解决这个问题 快速的谷歌搜索

我使用Spring Boot+Spring Security。我们在生产中使用
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机器和容器链接时,这是必要的)