nginx配置https请求转发到http出现Mixed Contend问题

问题描述

nginx配置https请求转发到http后,部分网站访问出现空白页,感觉像是js、css没有正常加载。通过F12,发现很多js文件出现Mixed Content,状态是已屏蔽,协议都是http的。

HTTPS网页中加载HTTP资源被称之为Mixed Content(混合内容),为了安全,浏览器默认做了屏蔽,致使页面出现问题。

解决方法

而通过 upgrade-insecure-requests 这个 CSP 指令,可以让浏览器帮忙做这个转换。启用这个策略后,有两个变化:

  1. 页面所有 HTTP 资源,会被替换为 HTTPS 地址再发起请求;
  2. 页面所有站内链接,点击后会被替换为 HTTPS 地址再跳转;

(另外一个https相关的SCP指令选项是:block-all-mixed-content。启用这个选项之后,所有的非https资源都被禁止加载)参考:解决nginx反向代理Mixed Content和Blockable问题 - MlxgzZ - 博客园 (cnblogs.com)

实际配置

比如如果有使用nginx做代理,可以在转发请求的时候添加一个Content-Security-Policy的头,并将这个头的值设置为upgrade-insecure-requests,来将http请求转为https。在nginx的location块中添加 add_header Content-Security-Policy upgrade-insecure-requests;

复制代码
location / { 
     proxy_pass http://X.X.X.X;
     proxy_set_header X-Real-IP $remote_addr;
     add_header Content-Security-Policy upgrade-insecure-requests;
  }
相关推荐
深耕AI9 小时前
【wordpress系列教程】01本地部署和云服务器部署
运维·服务器
嵌入式郑工9 小时前
UBUNTU开发环境下的一些实用的工具
linux·运维·ubuntu
代码不行的搬运工9 小时前
针对BGP前缀劫持的实用防御(2007)
运维·网络
阿珊和她的猫9 小时前
深入理解 HTML 中 `<meta>` 标签的 `charset` 和 `http-equiv` 属性
前端·http·html
渡我白衣9 小时前
多路转接模型与select
人工智能·深度学习·websocket·网络协议·机器学习·网络安全·信息与通信
交换机路由器测试之路9 小时前
什么是以太网
运维·网络·网络协议·路由器·以太网·交换机
_lst_9 小时前
linux进程控制
linux·运维·服务器
小时候没少挨打9 小时前
从0到1安装NVIDIA驱动(NVSwitch+Driver+IB网络驱动)
运维·服务器·数据库
九河云9 小时前
新能源汽车充电桩数字化:充电效率 AI 调控与运维服务云管理平台实践
运维·人工智能·汽车
可可苏饼干9 小时前
Docker命令与知识点归纳
运维·学习·docker·容器