Nginx无法在https中加载css / js / images – 阻止加载混合活动内容

我使用Nginx 1.8.0运行ubuntu 14.04。 在https中打开网页时,由于css / js / images无法加载,页面显示为中断。 我得到这个错误“ Blocked loading mixed active content

这是我的nginx.conf : https : //github.com/adithyakhamithkar/ansible/blob/master/roles/nginx/templates/nginx.j2

这是我的虚拟主机文件: https : //github.com/adithyakhamithkar/ansible/blob/master/roles/nginx/templates/virtualhost_ssl.j2

请有人请指导我如何解决这个问题。

不能用nginxconfiguration修复

考虑下面的html文件:

  <html> <head> </head> <body> <img src="http://example.com/some/image.png"> </body> </html> 

如果这个html文件是通过https服务的 – 它会一直生成混合内容警告。 尝试修复/some/image.png的后续请求将不起作用,请求被浏览器阻止,并且不会到达服务器。

修复html

唯一有效的解决scheme是修复主要请求的html源代码,以便从https://请求所有资源,也就是将html更改为:

  <html> <head> </head> <body> <img src="/some/image.png" alt="same domain and port as this html page please" /> </body> </html> 

或这个:

  <html> <head> </head> <body> <img src="https://example.com/some/image.png" alt="explicit https" /> </body> </html> 

在评论中你已经提到wordpress作为例子; 对于WordPress的安装唯一的东西(原则上,在实践中期望一些搞砸)是改变网站的url,以便wordpress认为https://example.com是安装的根url。

混合活动内容现在在Firefox 23及以上版本默认被阻止。 不确定其他浏览器

什么是混合内容?

当用户访问通过HTTP提供的页面时,他们的连接对于窃听和中间人(MITM)攻击是开放的。 当用户访问通过HTTPS提供的页面时,他们与Web服务器的连接将通过SSL进行身份validation和encryption,从而保护他们免受窃听者和MITM攻击。

但是,如果HTTPS页面包含HTTP内容,则即使通过HTTPS提供主页面,攻击者也可以读取或修改HTTP部分。 当HTTPS页面有HTTP内容时,我们称该内容为“混合”。 用户访问的网页只是部分encryption的,因为有些内容是通过HTTPencryption的。 混合内容阻止程序阻止HTTPS页面上的某些HTTP请求。

听起来你正在链接非ssl静态内容。 你应该像链接你的内容

 <a href='//host.com/file.png> 

如果您需要从其他主机链接。