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

Ubuntu系统Nginx部署WordPress出现403/404错误求助

解决Ubuntu下Nginx部署WordPress的403 Forbidden/404 Not Found错误

以下是针对性的排查和修复步骤:

1. 修正HTTP跳转的状态码错误

你的第一个server块中使用了return 300,这是多重选择状态码,浏览器无法正确处理该跳转规则,会直接导致访问异常。将其改为标准的永久跳转状态码:

server {
    listen 80;
    listen [::]:80;
    server_name zakiyadavidson.com www.zakiyadavidson.com;
    return 301 https://$server_name$request_uri; # 替换300为301
}

2. 验证PHP-FPM套接字的可用性与权限

Nginx需要通过PHP-FPM套接字处理PHP文件,若套接字不存在或权限错误会引发403/502类错误:

  • 检查套接字文件是否存在:
    ls -l /var/run/php/php8.1-fpm.sock
    
  • 确保该文件的属主/属组为www-data(Nginx默认运行用户):
    sudo chown www-data:www-data /var/run/php/php8.1-fpm.sock
    
  • 确认PHP-FPM服务正常运行:
    sudo systemctl status php8.1-fpm
    
    如果服务未启动,执行:sudo systemctl start php8.1-fpm

3. 确认WordPress根目录的正确性

检查Nginx配置中指定的root /var/www/zakiyadavidson.com路径下是否存在完整的WordPress核心文件:

ls -l /var/www/zakiyadavidson.com

确保能看到wp-config.php、index.php、wp-admin等关键文件,若路径错误则修正Nginx的root配置项。

4. 检查Nginx配置语法并重启服务

每次修改配置后,必须验证语法正确性并重启Nginx:

sudo nginx -t
sudo systemctl restart nginx

5. 查看Nginx错误日志定位根源

直接查看错误日志是最有效的排查方式,日志默认路径为/var/log/nginx/error.log:

sudo tail -n 20 /var/log/nginx/error.log

日志会明确提示错误原因,比如"permission denied"(权限问题)、"No such file or directory"(文件不存在)、"connect() to unix:/var/run/php/php8.1-fpm.sock failed"(PHP-FPM连接失败)等。

6. 修复WordPress固定链接配置

如果仅部分页面(如文章页)出现404,可能是固定链接设置异常:

  • 若能登录WordPress后台,进入「设置」→「固定链接」,选择任意一种非默认格式(如「文章名」)并点击「保存更改」,系统会自动同步rewrite规则(你的Nginx配置中已包含try_files $uri $uri/ /index.php?$args;,支持该规则)。

你的Nginx配置文件(原样整理)

server {
    listen 80;
    listen [::]:80;
    server_name zakiyadavidson.com www.zakiyadavidson.com;
    return 300 https://$server_name$request_uri;
}

server {
listen [::]:443 ssl ipv6only=on; # managed by Certbot
listen 443 ssl; # managed by Certbot
ssl_certificate 
/etc/letsencrypt/live/zakiyadavidson.com/fullchain.pem; # managed by 
Certbot
ssl_certificate_key 
/etc/letsencrypt/live/zakiyadavidson.com/privkey.pem; # managed by 
Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot

server_name zakiyadavidson.com www.zakiyadavidson.com;
root /var/www/zakiyadavidson.com;
index index.php;

    location / {
            try_files $uri $uri/ /index.php?$args;
    }

    location ~ \.php$ {
            include snippets/fastcgi-php.conf;
          fastcgi_pass unix:/var/run/php/php8.1-fpm.sock;
    }

#removed node.js server info from here

    location ~ /\.ht {
            deny all;
    }

    location ~ ^/\.user\.ini {
            deny all;
    }
}

内容的提问来源于stack exchange,提问作者Zakiya Davidson

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 19:43:21