nginx将域名反代到端口后css、js、图片等样式不加载的问题

1033 字
5 分钟
nginx将域名反代到端口后css、js、图片等样式不加载的问题
  • 2024.06.13 更新WordPress反代后CSS、JS和PNG报mixed content错误 当遇到WordPress反代后CSS、JS和PNG等资源无法加载,报mixed content错误时,这通常意味着网站中同时存在HTTP和HTTPS两种协议的请求。这种情况在博客主题内容使用CDN进行分发时尤为常见。

CDN的基本概念#

CDN的作用:CDN(内容分发网络)是一种分布式的网络服务,它通过在多个地理位置分布的服务器上存储网站的静态文件(如CSS、JS、图片等),来加快网站的访问速度。 CDN与HTTPS:当网站启用HTTPS加密协议后,如果CDN没有正确配置支持HTTPS,就会导致资源加载时的mixed content问题。

强制HTTPS的重要性#

数据安全:强制HTTPS可以确保用户与网站之间传输的数据不被截获和篡改,提高数据传输的安全性。 搜索引擎优化:搜索引擎,如Google和百度,更倾向于对启用HTTPS的网站给予更好的排名。

CDN配置的关键点#

HTTP回源问题:如果CDN配置为HTTP回源,而网站的其他部分已经使用了HTTPS,就会导致协议不一致的问题。解决这个问题需要在CDN设置中选择HTTPS回源。 缓存问题:CDN可能会缓存301重定向响应,导致即使设置了HTTP到HTTPS的跳转,用户仍可能访问到HTTP版本的页面。这需要通过在页面中加入JavaScript代码来实现客户端的自动跳转。

具体解决方案#

选择支持HTTPS的CDN:选择一个支持HTTPS的CDN服务商,如腾讯云CDN或VeryCloud,并确保正确配置SSL证书。 配置Nginx规则:对于不支持HTTPS的请求,可以通过配置Nginx规则来实现重定向。例如,对于非POST请求,可以强制重定向到HTTPS版本。

下面将详细解释这个问题的原因及解决方案,可以尝试配置Nginx规则在反向代理配置中加入以下代码:

proxy_set_header X-Forwarded-Proto https;
proxy_redirect http:// https://;

这两行代码的作用是:

proxy_set_header X-Forwarded-Proto https;:这行代码告诉后端服务器,客户端使用的真实协议是HTTPS。这样,后端服务器就可以根据这个信息来生成正确的URL,确保资源请求也是通过HTTPS协议发送的。

proxy_redirect http:// https://;:这行代码的作用是在反向代理收到后端服务器发回的HTTP响应内容时,直接将其中的HTTP URL重定向为HTTPS URL,然后再发回给用户。这样可以确保用户最终获取到的资源也是通过HTTPS协议加载的,避免了mixed content错误。

这两种方法可以单独使用,也可以结合使用。如果使用了CDN,可以直接强制HTTPS,或者启用HSTS(HTTP Strict Transport Security),或者对资源URL进行重写,都可以解决mixed content问题。这种问题通常是因为没有使用CDN直接反代服务器导致的。

nginx将域名反代到端口后css、js、图片等样式不加载的问题

宝塔创建网页后,将域名(http://chevereto.leiting2020.top/)反代到4000端口,通过在配置文件中添加一下代码实现

    location / {
      proxy_pass http://blog.leihub.cn:4000/;
    }

使用nginx的反向代理后,发现页面能正常跳转,可是css、js和相关的图片就是不出来,如下图

202305071823320

打开F12开发者模式,发现反代报错

image-20230507152221523

在配置中加上以下代码

    location ~ .*\.(js|css)?\$
    {
        expires      12h;
        proxy_set_header Host \$http_host;
        proxy_set_header X-Real-IP \$remote_addr;
        proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for;
        proxy_pass http://blog.leihub.cn:4000;#4000可改为你自己起服务器本地服务的端口
        error_log /dev/null;
        access_log /dev/null;
    }
location / {
proxy_set_header Host \$http_host;
proxy_set_header X-Real-IP \$remote_addr;
proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for;
proxy_pass http://blog.leihub.cn:4000/;#4000可改为你自己起服务器本地服务的端口
}</code></pre>

重启nginx服务,页面正常了。

支持与分享

如果这篇文章对你有帮助,欢迎分享给更多人或打赏支持!

打赏
nginx将域名反代到端口后css、js、图片等样式不加载的问题
https://blog.leihub.cn/archives/147/
作者
阿雷
发布于
2023-05-07
许可协议
CC BY-NC-SA 4.0
相关文章智能推荐
1
云服务器+FRP+Nginx,无需添加端口,直接使用域名访问家里的任何设备
内网穿透 & 组网之前写过ipv6+ddns访问nas服务的文章,这种方法有许多不足 一是必须在支持ipv6的环境下访问,许多公共场所的wifi一般就不支持ipv6,无法访问网站,像腾讯轻量云服务器也不支持访问纯ipv6服务,好像要云服务器才支持。这样轻量云
2
NotionNext 个人博客搭建教程:腾讯云 EdgeOne 部署
博客搭建 & 运维前言 目前主流的博客搭建方案可大致分为两类,且各有局限:一类是以 WordPress 为代表的动态博客系统,依赖独立服务器运行,运维与硬件成本较高;另一类是以 Hexo 为代表的静态博客框架,采用本地 Markdown 编写,无实时预览能力
3
群晖照片异地备份到 Unraid + Immich 相册搭建详细教程:rsync 同步与踩坑全记录
NAS & 云服务搭建我家里同时有白群晖和 unRAID 两台 NAS ,准备把群晖里攒了几年的照片进行异地备份,单盘 NAS 一旦坏了,照片可就全没了。 我自己折腾了两天,踩了一堆坑,终于跑通了一套「unRAID 定时拉取群晖 + Immich 相册」的方案。
4
西上东下:梵净山雾中徒步记
城市短途漫游朋友嚷嚷了一年的梵净山,最近终于找到了爬山窗口,做足了攻略的我们,直接选择来一波特种兵爬梵净山。 一、周五晚上10点,株洲站出发 我们几个都是从株洲出发的,火车是晚上的卧铺车,10 点出发,第二天凌晨 5:40 到铜仁。一张硬卧 138 块
5
折腾记录:2025 WordPress 搭建 + 迁移全攻略,Docker / 宝塔 / 插件多方案任选
博客搭建 & 运维一、前言 作为用 WordPress 写了四年博客的老用户,之前分享过不少主题配置、插件推荐的内容,很多朋友问过我怎么安装和迁移 WordPress,毕竟不管是新手入门还是换服务器,这两个都是刚需操作。今天就把我实际用过的几种安装方式和迁移
随机文章随机推荐

评论区

Profile Image of the Author
阿雷
一个小趴菜
公告
本站已从 WordPress 迁移到 Astro,访问更快、更清爽。文章链接保持原样(/archives/文章ID/),评论数据正在陆续恢复中。
分类
标签
最新动态
站点统计
文章
76
分类
15
标签
99
总字数
318,421
运行时长
0
最后活动
0 天前
站点信息
构建平台
EdgeOne Pages
博客版本
Firefly v6.16.8
文章许可
CC BY-NC-SA 4.0
文章目录