现象如题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坐等大神解惑,分不够可以另开贴加

解决方案 »

  1.   

    我发现一种新方法,解决http升级到https的问题:
    配置nginx,在响应中添加一个响应头:
    add_header Content-Security-Policy upgrade-insecure-requests;
    配置文件如图:
    此方法解决了我的问题,不知道对你有没有用。
    附文一篇:
    http://www.cnblogs.com/hustskyking/archive/2015/08/21/upgrade-insecure-requests.html
      

  2.   

    这个不是我所遇到的问题,当然也不能解决我的问题我的问题是在浏览器上访问的是https,tomcat中的java程序获取到的地址是http的
      

  3.   

    这个不是我所遇到的问题,当然也不能解决我的问题我的问题是在浏览器上访问的是https,tomcat中的java程序获取到的地址是http的我也想在Java中获取到https,nginx和tomcat都配置了,搞了两天了,还没搞好
      

  4.   

    配置一下https强制跳转应该就可以解决
    if ( $scheme = http ){
               return 301 https://$server_name$request_uri;
            }
      

  5.   

    我觉得是以下的问题:
          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呢?
      

  6.   

    proxy_pass http://myserver;
    这里的myserver是不是ipv6的地址或者localhost指向的ipv6的地址,改成v4试试看呢
      

  7.   

      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; 加上端口
      

  8.   

    proxy_pass http://myserver;
    这里设置的是 http,需要换成 https,而且 tomcat 的证书需要配置正确。