Wordpress 和 Nginx 与 Docker:未加载静态文件

Vin*_*oft 5 wordpress nginx docker

我正在使用 Docker 来为我的简单 WordPress 网站提供服务。一个 nginx 容器和一个 wordpress 容器。简单设置:

upstream wordpress_english {
  server wordpress_en:80;
}

server {
  listen 80;
  server_name my_domain.com www.my_domain.com;

  location / {
        proxy_pass http://wordpress_english;
    }
}
Run Code Online (Sandbox Code Playgroud)

问题:静态文件(css、js 和图像)未加载。

浏览器控制台的输出显示 404:

http://wordpress_english/wp-content/themes/twentyfifteen/genericons/genericons.css?ver=3.2
Run Code Online (Sandbox Code Playgroud)

很容易发现问题:浏览器在 wordpress_english(nginx 上游名称)查找静态文件,而不是my_domain.com

我该如何解决这个问题?

Vin*_*oft 5

这不是nginx问题,而是 WordPress 的问题。

解决方案

在 中wp-config.php,添加以下两行:

define('WP_HOME','http://my_domain.com');
define('WP_SITEURL','http://my_domain.com');
Run Code Online (Sandbox Code Playgroud)

在 WordPress 安装过程中,WordPress 会自动设置WP_HOMEnginx上游名称。上述解决方案会覆盖默认设置。


Tit*_*lle 0

看来是你的 nginx 配置文件有问题。

声明您的服务器时,my_domainlocation /提供proxy_pass wordpress_english. 我对 nginx 不太了解,但我在你的服务器中没有看到任何路径声明my_domain,并且 root 是否链接到wordpress_english. wordpress_english他在您的服务器中而不是在您的服务器中查找文件似乎很正常。(事实上​​,我猜他正在你的服务器中查找,但你的服务器告诉你在 WordPress 中查找)。

不确定,因为我不太了解 nginx 和 proxy_pass 函数。