• shiro重定向或会话失效后NginxURL地址无效,以及浏览器控制台Mixed Content: The page at ‘https://XXX’ was loaded over HTTPS, but requested an insecure错误


    1,未配置前Nginx的配置

           server {
                listen 80;
            server_name www.***.cn;
            return 301 https://$server_name$request_uri;
    
            location / {
    #                            proxy_pass http://localhost:8080;
    #                            proxy_redirect off;
    #                            proxy_set_header Host $host;
    #                            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    #                            proxy_set_header X-Real-IP $remote_addr;                                                       
                                }
    #            #rewrite ^(.*) https://$server_name$1 permanent;
    #            
           }
    
            server {            
                listen 443 ssl;
                server_name www.***.cn;
    
                ssl_certificate    /etc/nginx/cert/4369939_www.***.cn.pem;
                ssl_certificate_key   /etc/nginx/cert/4369939_www.***.cn.key;
                ssl_session_timeout 5m;
                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_set_header X-Real-IP $remote_addr;
    #                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                                   proxy_cookie_path / "/; httponly; secure; SameSite=Lax";
    #                proxy_set_header X-Forwarded-Proto https;
    #                proxy_set_header Host $http_host;
    #                proxy_set_header X-NginX-Proxy true;
                    proxy_pass http://localhost:8080;
    #                proxy_redirect on;
                }   
            }

    2,修改后的配置,添加红色字体带下划线的配置后就解决NginxURL地址无效问题,但是浏览器控制台会出现

    Mixed Content: The page at ‘https://XXX’ was loaded over HTTPS, but requested an insecure........报错,

    在使用tomcat+nginx时。Nginx使用https,tomcat使用http。使用iframe之类框架,在重定向时会出现以上问题导致页面加载不出来。这是因为Tomcat不能知道Nginx发来的是http还是https。

    让tomcat知道nginx发来的是http还是https。默认情况下,nginx得到的https的访问会以http的方式发给负载的tomcat。

    解决方法:

      1.加入下面蓝色字体配置

      2.在tomcat的server.xml  Engine 模块下配置一个 Value,最后重启tomcat和Nginx即可。

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

    借鉴:https://blog.csdn.net/qq_27114677/article/details/77848078

    server {
                    listen 80;
                    server_name www.***.cn;
                    return 301 https://$server_name$request_uri;
    
                    location / {
    #                                                       proxy_pass http://localhost:8080;
    #                                                       proxy_redirect off;
    #                                                       proxy_set_header Host $host;
    #                                                       proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    #                                                       proxy_set_header X-Real-IP $remote_addr;
                                                            }
    #                       #rewrite ^(.*) https://$server_name$1 permanent;
    #
           }
    
                    server {
                            listen 443 ssl;
                            server_name www.***.cn;
    
                            ssl_certificate    /etc/nginx/cert/4369939_www.***.cn.pem;
                            ssl_certificate_key   /etc/nginx/cert/4369939_www.***.cn.key;
                            ssl_session_timeout 5m;
                            ssl_protocols TLSv1.2 TLSv1.3;
                            ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
                            ssl_prefer_server_ciphers off;
    
                            rewrite https://$server_name/login permanent;
    
                            location / {
                                    proxy_set_header X-Real-IP $remote_addr;
                                    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                                    proxy_cookie_path / "/; httponly; secure; SameSite=Lax";
                                    proxy_set_header X-Forwarded-Proto https;
                                    proxy_set_header Host $Host:$server_port;
    #                               proxy_set_header X-NginX-Proxy true;
                                    proxy_pass http://localhost:8080;
    #                               proxy_redirect on;
                            }
                    }
  • 相关阅读:
    测试AtomicInteger的可见性、有序性、原子性
    java实现hssf导出excel文件及自定义选择路径工具类
    map转换成com.google.gson.JsonObject
    String[]转List<String>
    classLoader打破双亲委托机制
    类加载器的加密解密
    自定义类加载器和父委托机制
    java中获取项目路径
    JVM内置三大类加载器详细介绍
    初识继承和多态
  • 原文地址:https://www.cnblogs.com/ljmm/p/14167123.html
Copyright © 2020-2023  润新知