You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

跨服务器Nginx+WordPress部署:wp-content/wp-includes 404错误求助

问题描述

服务器1部署Nginx,接收所有请求并转发至服务器2的WordPress站点(域名example.com),Nginx位于Cloudflare后方,使用源站SSL证书。当前站点可正常访问,但访问example.com/wp-content或example.com/wp-includes路径下的静态资源时返回404错误,具体如https://www.example.com/wp-includes/js/clipboard.min.js?ver=2.0.11无法加载,Chrome控制台提示资源MIME类型为text/html,多个静态文件报net::ERR_ABORTED 404 (Not Found)。

错误原因分析

  1. 静态文件location配置错误:服务器1的Nginx中,针对js/css等静态文件的location块设置了root /wp-includes,但服务器1本地不存在该路径,且未将静态请求转发至服务器2的PHP-FPM,导致直接返回404。
  2. SCRIPT_FILENAME适配问题:服务器2的PHP-FPM启用了chroot = /home/company/server/example/website,而服务器1的Nginx中fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name的设置,会导致PHP-FPM在chroot环境中找不到对应文件路径。
  3. WP_HOME未强制HTTPS:wp-config.php中WP_HOME使用http://前缀,与Cloudflare提供的HTTPS访问环境不匹配,可能导致资源路径生成异常。
  4. 错误引入proxy.conf:proxy.conf是用于HTTP反向代理的配置,不适用于fastcgi连接PHP-FPM的场景,会导致无效的头信息传递。

修正后的配置示例

1. 服务器1的Nginx配置

server {
    listen 443 ssl http2;
    ssl_certificate /home/company/server/ssl/cert.pem;
    ssl_certificate_key /home/company/server/ssl/private_key.key;
    server_name example.com www.example.com;

    gzip on;
    index index.php index.html;

    # 遵循WordPress URL重写逻辑,先尝试文件,否则转发至入口文件
    location / {
        try_files $uri $uri/ /index.php?$args;
    }

    location ~* \.php$ {
        include mime.types;
        include snippets/fastcgi-php.conf;
        fastcgi_pass 192.168.100.56:9000;
        # 适配PHP-FPM的chroot环境,传递chroot内部的路径
        fastcgi_param SCRIPT_FILENAME /$fastcgi_script_name;
        include fastcgi_params;
        fastcgi_intercept_errors on;
        # 传递Cloudflare相关转发头
        fastcgi_param HTTP_X_FORWARDED_PROTO $scheme;
        fastcgi_param HTTP_X_FORWARDED_HOST $host;
        fastcgi_param REMOTE_ADDR $remote_addr;
    }

    # 禁止访问敏感文件
    location ~* \.(htaccess|htpasswd|ini|log|sh|sql|bak|conf)$ {
        deny all;
    }
}

2. wp-config.php修正

define( 'WP_DEBUG', true );
define( 'CONCATENATE_SCRIPTS', false );
define('FORCE_SSL_LOGIN', true);
define('FORCE_SSL_ADMIN', true);

# 强制WP_HOME使用HTTPS,匹配Cloudflare访问环境
define( 'WP_HOME', 'https://' . $_SERVER['HTTP_HOST']);
define( 'WP_SITEURL', WP_HOME );

if ($_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https')
    $_SERVER['HTTPS']='on';

if (isset($_SERVER['HTTP_X_FORWARDED_HOST'])) {
    $_SERVER['HTTP_HOST'] = $_SERVER['HTTP_X_FORWARDED_HOST'];
}
if ( ! defined( 'ABSPATH' ) ) {
        define( 'ABSPATH', __DIR__ . '/' );
}
require_once ABSPATH . 'wp-settings.php';

修正说明

  • 移除错误的静态文件location块,改用try_files让所有请求遵循WordPress的URL重写规则,确保静态资源请求能正确到达服务器2的WordPress目录。
  • 调整SCRIPT_FILENAME参数,适配服务器2的PHP-FPM chroot环境,让PHP能找到正确的文件路径。
  • 强制WP_HOME使用HTTPS前缀,避免生成HTTP格式的资源链接。
  • 移除对proxy.conf的引用,避免无效的反向代理头干扰fastcgi连接。

内容的提问来源于stack exchange,提问作者Jason The Dynamite

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 16:10:54