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

迁移WordPress从AL2到AL2023后Nginx无法加载自定义配置

Amazon Linux 2023 Nginx无法加载自定义WordPress配置,仍使用默认根目录

问题背景

从Amazon Linux 2迁移到Amazon Linux 2023后,WordPress部署正常,但Nginx始终使用默认根目录/usr/share/nginx/html而非自定义的/var/wordpress/info/DocumentRoot,curl请求返回404,错误日志显示访问默认路径。已尝试重启Nginx、禁用SELinux、调整目录上下文,均无效。

排查步骤

  1. 确认自定义配置是否被加载
    执行nginx -T(大写T),该命令会输出Nginx加载的所有配置内容。搜索wordpress_http.conf,确认文件是否被加载,以及其中的server块和root配置是否正确。如果看不到该文件的内容,说明配置未被加载,可能是路径错误、权限不足或语法有问题。

  2. 检查配置语法是否正确
    执行nginx -t,如果输出syntax is ok和test is successful则无语法问题;如果报错,根据提示修复配置里的语法错误(比如漏写分号、括号不匹配等)。

  3. 验证Server块的优先级
    AL2023的默认nginx.conf里可能自带一个监听80端口的默认server块,根目录就是/usr/share/nginx/html。如果你的自定义server块的server_name匹配不够精确,Nginx会优先使用默认块。
    检查wordpress_http.conf里的server块:

    • 必须包含server_name xxx.yyy.mysite.com;,要和curl请求里的Host头完全一致
    • root要明确指向/var/wordpress/info/DocumentRoot
      示例正确的配置片段:
    server {
        listen 80;
        server_name xxx.yyy.mysite.com;
        root /var/wordpress/info/DocumentRoot;
    
        location / {
            index index.php index.html;
            try_files $uri $uri/ /index.php?$args;
        }
    
        # 处理WordPress PHP请求
        location ~ \.php$ {
            fastcgi_pass unix:/run/php-fpm/www.sock; # 按你的PHP-FPM实际配置调整
            fastcgi_index index.php;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            include fastcgi_params;
        }
    }
    
  4. 检查文件权限与Nginx运行用户

    • 查看Nginx运行用户:ps aux | grep nginx,AL2023里默认是nginx用户
    • 检查站点根目录权限:ls -ld /var/wordpress/info/DocumentRoot,确保nginx用户有读权限(目录至少设为755,文件设为644)
    • 检查自定义配置文件权限:ls -l /etc/nginx/conf.d/wordpress_http.conf,权限要设为644,属主为root
  5. 排查SELinux相关问题
    虽然你已经临时禁用SELinux,但可以确认上下文是否正确:

    • 执行ls -Z /var/wordpress/info/DocumentRoot,查看上下文是否为httpd_sys_content_t
    • 如果禁用SELinux后问题仍存在,说明不是SELinux的问题;如果启用后出现问题,执行sudo restorecon -R /var/wordpress/info/DocumentRoot修复上下文
    • 查看SELinux审计日志:grep nginx /var/log/audit/audit.log,检查是否有Nginx被拒绝访问目录的记录

对应解决方案

  • 配置未加载:修复路径、权限或语法错误,重启Nginx
  • 默认Server块优先级高:确保自定义server块的server_name精确匹配Host头,或者注释掉默认的server块
  • 权限不足:调整目录和配置文件的权限,让Nginx用户拥有可读权限
  • SELinux问题:修复上下文或根据审计日志配置SELinux规则

内容的提问来源于stack exchange,提问作者Mahbub Rahman

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 21:03:16