nginx将 HTTPS 请求转发到 HTTP服务器时报错9Mixed Content: The page at '<URL>' was loaded over HTTPS, but requested an insecure script '<URL>'. This request has been blocked; the content must be served over HTTPS.
时间: 2023-08-12 20:52:29 浏览: 234
这个错误通常出现在代理服务器将 HTTPS 请求转发到 HTTP 服务器时。当代理服务器收到 HTTPS 请求后,会将其转发到 HTTP 服务器,但是在转发时,如果请求中包含了 HTTP 链接,就会导致浏览器出现混合内容错误。
解决这个问题可以有两种方法:
1. 将 HTTP 服务器配置为支持 HTTPS 协议。这样就可以在代理服务器将 HTTPS 请求转发到 HTTP 服务器时,保持链接的安全性,避免出现混合内容错误。
2. 将代理服务器配置为在转发请求时将 HTTP 链接修改为 HTTPS 链接。可以使用 nginx 的 sub_filter 模块来实现这个功能。具体的配置可以参考下面的示例:
```
location / {
proxy_pass http://example.com;
sub_filter 'http://' 'https://';
sub_filter_once off;
proxy_set_header Accept-Encoding "";
proxy_set_header Host $host;
}
```
这个配置会将请求中的所有 `http://` 链接替换成 `https://` 链接,并且在转发时禁用 Accept-Encoding 头部,防止出现压缩问题。
阅读全文