【问题标题】:spring boot request.getRequestURL() cannot get httpsspring boot request.getRequestURL() 无法获取 https
【发布时间】:2021-05-12 01:57:59
【问题描述】:

我的项目是nginx+spring boot, ,spring boot 端口为 8080 ,我用nginx转发后request.getRequestURL()只能获取http不能获取https

public static String  getRootUrl(HttpServletRequest request){
        StringBuffer url = request.getRequestURL();
        String tempContextUrl = url.delete(url.length() - request.getRequestURI().length(), url.length()).append(request.getSession().getServletContext().getContextPath()).append("/").toString();
        return tempContextUrl;
    }

nginx是用https配置的

    server {
    listen         80;
    server_name    xx.xxx.xx; 
    add_header Strict-Transport-Security max-age=15768000;
    return 301 https://$server_name$request_uri;
    }

    server {
    listen 443 ssl; 
    server_name xx.xxx.xxx; 

    keepalive_timeout 10m;
    ssl_certificate      cert.pem; # 
    ssl_certificate_key  cert.key; # 
    ssl_session_timeout 24h;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers on;
    location / {
            proxy_pass http://127.0.0.1:8080;
            proxy_redirect off;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
            proxy_set_header X-Forwarded-Port $server_port;
            add_header Content-Security-Policy upgrade-insecure-requests;
        }
    }

【问题讨论】:

    标签: spring-boot nginx ssl


    【解决方案1】:

    你的 nginx 代理到 8080 端口,这个应用是一个集成的 tomcat 服务器,你没有在这个 tomcat 中配置 ssl,所以,应用内部是 http,你可以在 spring boot 中配置 ssl。

    【讨论】:

      猜你喜欢
      • 2018-01-25
      • 2019-05-19
      • 1970-01-01
      • 1970-01-01
      • 2015-06-10
      • 1970-01-01
      • 2020-11-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多