225 日 , 2021 14:24:56
Docker + Php-fpm = 混乱

为了全 Docker 搭建博客,尝试了两种方法进行搭建:反代方法(WordPress 单独开 Web 服务器,Nginx 前端服务器做 SSL 终止)和 Php-fpm 方法(WordPress 启动 fpm,由 Nginx 直接连接并处理)。

由于一开始使用 Php-fpm 方法不顺利(Host 传递错误,让 WordPress 以为网站地址为内网地址;HTTPS 错误,导致大量资源被 WordPress 设置为 HTTP 而不走 SSL),继而使用反代,然后又出了问题wwww,先是静态资源 404(后经确定,由于 Nginx 路由配置疏漏,以为 `location /` 可以匹配所有请求,但实际上静态资源依旧需要单独设置路由),然后还是资源不走 HTTPS 的问题,最后经过群里 dalao 的解答下,通过映射 Nginx 服务器到 WordPress 网站根目录,然后通过 TCP 让 Nginx 连接 WordPress 的方法成功搭建,虽有部分小问题,但目前已修复,状态良好!

全 Docker 下搭建 Nginx + MySQL + WordPress 可能会遇到的问题:

  • 由于 WordPress 容器内,网站根目录为 `/var/www/html`,故 Nginx 不仅要映射到该目录在宿主机的真实路径,还要通过 Nginx 的 FastCGI 模块设置 open_basedir PHP 参数,添加 /var/www/html
  • WordPress 容器的 fpm 连接方式为 TCP!监听端口为 9000
  • 由于部分主题存在使用 JavaScript eval() 函数的情况,如果 CSP(Content-Security-Policy,内容安全策略)未允许 unsafe-eval 就会导致主题很多功能无法使用!解决方法就是在响应头的 CSP 添加 `’unsafe-eval’` 到尾部即可