l.jpg

一、需求

1、基本说明

适用于网站基于 ThinkPHP、Laravel等将入口放在 public下的框架开发的网站。

网站的入口文件为 public , 但 static 等静态文件的访问是 http://www.demo.com/static/images/logo.jpg

使用 Nginx 反向代理就会出现问题。

网站使用 Nginx + Apache 构建服务器,通过 Nginx 反向代理请求。

之前为了方便,我在 Nginx 配置中 虚拟主机配置站点的 root 为 root /data/www/public/

这样静态资源的请求会直接进入 public 中,初步解决了 nginx 反向代理导致的静态资源无法加载的问题

2、出现问题

由于我是全站 HTTPS , 使用 Let's Encrypt ,导致 .well-known 就无法正常访问,导致无法续约证书。

这种情况下我只能再次修改回原来的 root 配置。因此 静态资源依旧无法加载。

二、解决

1、 基本说明

我的 静态资源的目录结构是:

---public
   ---static
      ---images
      ---js
      ---css
   ---uploads

存在问题 无法加载任何 public 下的静态资源,包括 static 和 uploads 中的

2、 修改反向代理配置

单独修改 nginx 配置中 对 /static/ 和 /uploads/ 的访问路径

 location ^~ /static/ { 
    root /data/www/public/;
    include proxy.conf;
}
 location ^~ /uploads/ { 
    root /data/www/public/;
    include proxy.conf;
}

这样 我将 以 /static/ 开头的请求全部更改一下 root.

而我的 .well-known 的访问不会有任何的问题,ssl证书续约就没问题了