悬赏1000分:linux环境nginx转发tomcat时https,httpRequest.getRequestURI()获取的缺是http

浪尖赏花 2016-12-26 09:46:49
现象如题

tomcat设置了
<Valve className="org.apache.catalina.valves.RemoteIpValve" remoteIpHeader="X-Forwarded-For" protocolHeader="X-Forwarded-Proto" protocolHeaderHttpsValue="https"/>

nginx设置了
server {
listen 18443 ssl;
server_name localhost;
ssl on;
# access_log logs/httpshost.access.log main;
ssl_certificate my.crt;
ssl_certificate_key my.key;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_ciphers EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH:HIGH:!RC4:!MD5:!aNULL:!eNULL:!NULL:!DH:!EDH:!EXP:+MEDIUM;
ssl_prefer_server_ciphers on;
location / {
proxy_pass http://myserver;
proxy_set_header Host $host;
proxy_redirect http:// $scheme://;
proxy_set_header X-Forwarded-Proto "https";
}
}

这样设置了还是不行
tomcat6、nginx1.8、jdk1.7

坐等大神解惑,分不够可以另开贴加

...全文
1482 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
幽饮烛 2017-12-13
  • 打赏
  • 举报
回复
proxy_pass http://myserver; 这里设置的是 http,需要换成 https,而且 tomcat 的证书需要配置正确。
cqyy725 2017-12-08
  • 打赏
  • 举报
回复
location / { proxy_pass http://myserver; proxy_set_header Host $host; proxy_redirect http:// $scheme://; proxy_set_header X-Forwarded-Proto "https"; } 楼上一群神经病吗? proxy_pass http://myserver; 改成 https不就行了吗? proxy_set_header X-Forwarded-Proto "https"; 这个删掉 proxy_set_header Host $host; 加上端口
Mr_Ali 2017-12-07
  • 打赏
  • 举报
回复
proxy_pass http://myserver; 这里的myserver是不是ipv6的地址或者localhost指向的ipv6的地址,改成v4试试看呢
米兔痴愚 2017-09-22
  • 打赏
  • 举报
回复
我觉得是以下的问题: location / { proxy_pass http://myserver; proxy_set_header Host $host; proxy_redirect http:// $scheme://; proxy_set_header X-Forwarded-Proto "https"; } nginx代理转发到tomcat时2,使用是http转发的,那么tomcat获取到的就是客户端连接自然就是http的吧?! 感觉就是 客户端=====(HTTPS)====》nginx=====(HTTP)=====》Tomcat。 想让java也获取https,是否应该是ngnix==》Tomcat时就用HTTPS呢?
kyzy_yy_pm 2017-09-20
  • 打赏
  • 举报
回复
18443 是神马端口,不是443吗,你请求的地址带端口号?
屌炸侠 2017-09-14
  • 打赏
  • 举报
回复
请问下楼主最后是怎么解决的?我也遇到了这个问题,搞了两天。。。
浪尖赏花 2016-12-27
  • 打赏
  • 举报
回复
引用 2 楼 lupangdelu 的回复:
我发现一种新方法,解决http升级到https的问题: 配置nginx,在响应中添加一个响应头: add_header Content-Security-Policy upgrade-insecure-requests; 配置文件如图: 此方法解决了我的问题,不知道对你有没有用。 附文一篇: http://www.cnblogs.com/hustskyking/archive/2015/08/21/upgrade-insecure-requests.html
这个不是我所遇到的问题,当然也不能解决我的问题 我的问题是在浏览器上访问的是https,tomcat中的java程序获取到的地址是http的
IT黄三爷 2016-12-27
  • 打赏
  • 举报
回复
我发现一种新方法,解决http升级到https的问题:
配置nginx,在响应中添加一个响应头:
add_header Content-Security-Policy upgrade-insecure-requests;
配置文件如图:


此方法解决了我的问题,不知道对你有没有用。
附文一篇:
http://www.cnblogs.com/hustskyking/archive/2015/08/21/upgrade-insecure-requests.html
兔子先生2021 2016-12-27
  • 打赏
  • 举报
回复
配置一下https强制跳转应该就可以解决 if ( $scheme = http ){ return 301 https://$server_name$request_uri; }
IT黄三爷 2016-12-27
  • 打赏
  • 举报
回复
引用 3 楼 lihui_shine 的回复:
[quote=引用 2 楼 lupangdelu 的回复:] 我发现一种新方法,解决http升级到https的问题: 配置nginx,在响应中添加一个响应头: add_header Content-Security-Policy upgrade-insecure-requests; 配置文件如图: 此方法解决了我的问题,不知道对你有没有用。 附文一篇: http://www.cnblogs.com/hustskyking/archive/2015/08/21/upgrade-insecure-requests.html
这个不是我所遇到的问题,当然也不能解决我的问题 我的问题是在浏览器上访问的是https,tomcat中的java程序获取到的地址是http的[/quote] 我也想在Java中获取到https,nginx和tomcat都配置了,搞了两天了,还没搞好
IT黄三爷 2016-12-27
  • 打赏
  • 举报
回复
顶贴,遇到同样的问题!!! 求大神解答!!

19,612

社区成员

发帖
与我相关
我的任务
社区描述
系统使用、管理、维护问题。可以是Ubuntu, Fedora, Unix等等
社区管理员
  • 系统维护与使用区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧