nginx反代后java的request.getScheme获取不到https的解决办法

03-22 1281阅读

在实际工作中,经常会用到nginx反向代理应用,访问https页面Java 通过request.getScheme()获取不到https协议,或者response.sendRedirect重定向是http,而不是我们想要的https。

nginx反代后java的request.getScheme获取不到https的解决办法
(图片来源网络,侵删)

问题原因

经过反代后,协议信息没有转发到后端,或者后端没有设置 protocolHeader 

nginx配置

需要在nginx的配置文件的server段加上 proxy_set_header X-Forwarded-Proto $scheme,

nginx的server完整配置如下(仅做参考):

server {
	listen 80;
	listen 443 ssl;
	server_name www.aa.com;
	if ($scheme != "https") {
		rewrite ^(.*)$  https://$host$1 permanent;
	}
	ssl_certificate  /etc/letsencrypt/live/aa.com/fullchain.pem;
	ssl_certificate_key  /etc/letsencrypt/live/aa.com/privkey.pem;
	ssl_session_timeout 5m;
	ssl_protocols TLSv1.2;
	ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4:!DH:!DHE;
	ssl_prefer_server_ciphers on;
	add_he
VPS购买请点击我

文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。

目录[+]