网站首页linux

新版本Chrome阻止https页面加载http资源的解决方法

发布时间:2020-10-23 06:07:04编辑:阅读(4859)

    新版本的Chrome, 打开https页面时,发现所有的http静态资源都挂掉了,chrome已将所有http资源自动升级为HTTPS。

    然而好多CDN的https资源是收费的,不如找个https的域名中转一下。

    使用nginx配置个https的域名(target.com)反向代理到cdn域名(resource1.com, resource2.com)


    server {
        listen     443;
        server_name  target.com;
        
        ssl     on; 
        ssl_certificate ./cert/full_chain.pem;
        ssl_certificate_key  ./cert/private.key;
        ssl_session_timeout  10m;
        ssl_ciphers HIGH:!aNULL:!MD5;
        ssl_prefer_server_ciphers   on; 
        
        proxy_set_header X-Forwarded-For  $proxy_add_x_forwarded_for;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header REMOTE-HOST $remote_addr;
        proxy_set_header Referer "";
         
        location /sn1/ {
            proxy_pass http://resource1.com/;    
        }   
        location /sn2/ {
            proxy_pass http://resource2.com/;    
        }
    }


    所有http://resource1.com/xxx的资源,都可以使用https://target.com/sn*/xxx访问了。

    ----------------------------proxy_pass中url的/用法备注-----------------------------------


    在nginx中配置proxy_pass时,

    当在后面的url加上了/,相当于是绝对根路径,则nginx不会把location中匹配的路径部分代理走;

    如果没有/,则会把匹配的路径部分也给代理走。

     

    下面四种情况分别用https://target.com/proxy/test.html 进行访问。

    第一种:

    location /proxy/ {
         proxy_pass http://resource.com/;
    }

    会被代理到http://resource.com/test.html 这个url

     

    第二种:

    location /proxy/ {
         proxy_pass http://resource.com;
    }

    会被代理到http://resource.com/proxy/test.html 这个url

     

    第三种:

    location /proxy/ {
         proxy_pass http://resource.com/subdir/;
    }

    会被代理到http://resource.com/subdir/test.html 这个url

     

    第四种:

    location /proxy/ {
         proxy_pass http://resource.com/subdir;
    }

    会被代理到http://resource.com/subdirtest.html 这个url


评论