nginx反代后java的request.getScheme获取不到https的解决办法
在实际工作中,经常会用到nginx反向代理应用,访问https页面Java 通过request.getScheme()获取不到https协议,或者response.sendRedirect重定向是http,而不是我们想要的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
文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。