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

从Apache2迁移至Nginx后WordPress站点遇Cloudflare 512错误求助

解决WordPress迁移至Nginx后Cloudflare 512错误的调试方案

首先,Cloudflare的512错误通常意味着源站(你的Nginx服务器)无法在规定时间内响应Cloudflare的请求,结合你Nginx日志只有启动信息的情况,咱们一步步排查:

1. 先绕开Cloudflare,直接验证源站可用性

先把域名的Cloudflare代理暂时关闭(改成DNS Only模式),直接用服务器公网IP访问站点,比如http://你的服务器IP:

  • 如果直接访问也打不开,问题肯定出在Nginx或WordPress的本地配置上,和Cloudflare无关;
  • 如果直接访问正常,那问题大概率在Cloudflare的规则设置,或者服务器防火墙限制了Cloudflare的IP段。

2. 检查Nginx的WordPress配置是否合规

你的WordPress部署在/var/www,确保Nginx站点配置文件(一般在/etc/nginx/sites-available/目录下)包含正确的规则,以下是标准的WordPress Nginx配置模板,你可以对比调整:

server {
    listen 80;
    server_name 你的域名;
    root /var/www;
    index index.php index.html index.htm;

    # 适配WordPress固定链接的核心规则
    location / {
        try_files $uri $uri/ /index.php?$args;
    }

    # PHP请求处理规则,注意匹配你的PHP-FPM监听地址
    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php7.4-fpm.sock; # 替换为你实际的PHP版本对应的套接字/端口
    }

    # 禁止访问敏感的隐藏文件
    location ~ /\.ht {
        deny all;
    }
}

修改后记得执行sudo nginx -t检查配置语法,没问题就重启Nginx:sudo systemctl restart nginx

3. 确认PHP-FPM服务正常运行

Nginx本身不处理PHP请求,完全依赖PHP-FPM,所以必须确保这个服务状态正常:

  • 执行sudo systemctl status php7.4-fpm(替换为你的PHP版本),看是否显示active (running);
  • 如果未运行,启动服务:sudo systemctl start php7.4-fpm,并设置开机自启:sudo systemctl enable php7.4-fpm;
  • 额外检查PHP-FPM配置文件(/etc/php/7.4/fpm/pool.d/www.conf)里的listen项,要和Nginx配置中的fastcgi_pass完全一致。

4. 检查服务器防火墙与安全组

确保服务器的防火墙(比如ufw)允许80、443端口的入站请求;如果用了云服务商的安全组,也要同步开放这两个端口。另外,如果你之前设置过IP白名单,要把Cloudflare的所有IP段添加进去,避免被拦截。

5. 开启Nginx详细错误日志排查

当前你的Nginx日志只有启动信息,说明日志级别设置过高,修改Nginx主配置(/etc/nginx/nginx.conf)里的日志级别:

error_log /var/log/nginx/error.log warn; # 改成warn或debug,debug会输出更详细的调试信息

重启Nginx后再访问站点,查看/var/log/nginx/error.log,就能看到具体的错误细节(比如PHP连接失败、文件权限不足等)。

6. 修正WordPress目录文件权限

/var/www目录的权限配置错误也会导致站点无法响应,建议设置为:

  • 目录权限:755
  • 文件权限:644
  • 所有者:www-data:www-data(Nginx和PHP-FPM的默认运行用户)
    执行以下命令批量调整:
sudo chown -R www-data:www-data /var/www
sudo find /var/www -type d -exec chmod 755 {} \;
sudo find /var/www -type f -exec chmod 644 {} \;

7. 检查Cloudflare的SSL配置(仅当直接访问IP正常时)

如果源站直接访问没问题,但Cloudflare代理后报错,重点检查SSL/TLS模式:

  • 若服务器已配置有效的SSL证书(比如Let's Encrypt证书),建议设置为Full或Full (strict);
  • 若服务器还没配置SSL,先临时切换为Flexible模式测试,后续再部署证书切换到更安全的模式。

按照以上步骤逐一排查,应该能快速定位并解决问题。

内容的提问来源于stack exchange,提问作者David Async

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 07:00:41