网站首页linux
新版本Chrome阻止https页面加载http资源的解决方法
发布时间:2020-10-23 06:07:04编辑:阅读(3604)
新版本的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
评论