Nginx配置HTTPS后页面加载不安全资源怎么办?

Mr-慧研 阅读 8

我用Let’s Encrypt给Nginx配了HTTPS,但网页里有些图片和脚本还是HTTP的,浏览器直接报“混合内容”错误,页面功能都乱了。

试过在Nginx里加add_header Content-Security-Policy "upgrade-insecure-requests";,但好像没生效。我的Nginx配置是这样的:

server {
    listen 443 ssl;
    server_name example.com;
    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
    root /var/www/html;
    index index.html;
}
我来解答 赞 5 收藏
二维码
手机扫码查看
1 条解答
端木爱慧
你这个问题很简单,add_header没生效是因为少了always参数。另外最根本的办法是改HTML里的链接。Nginx配置改成这样:

server {
listen 443 ssl;
server_name example.com;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
root /var/www/html;
index index.html;

add_header Content-Security-Policy "upgrade-insecure-requests" always;
}


上面这是临时让浏览器自动升级请求。

但建议你直接改HTML源码,把 src="http:// 改成 src="// 或者 src="https://,一劳永逸。
点赞
2026-03-17 11:12