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

Nginx配置求助:主域名部署Nuxt.js应用+子目录部署WordPress

解决Nuxt.js主域名 + WordPress子目录的Nginx配置问题

嘿,我帮你梳理一下怎么搞定这个配置!你已经在主域名https://damjanun.com部署了Nuxt.js应用,现在要在/blog子目录跑WordPress,核心是调整Nginx的路由规则,让它能正确区分两类请求,避免路由冲突。下面是一步步的实操方案:

一、先准备WordPress文件

  • 把WordPress的所有文件上传到服务器的独立目录,比如/var/www/wordpress(别和Nuxt的部署目录混在一起,避免权限或路径混乱)
  • 给这个目录设置正确的权限,让Nginx能读取和写入:
    chown -R www-data:www-data /var/www/wordpress
    chmod -R 755 /var/www/wordpress
    

二、修改Nginx站点配置

找到你当前配置Nuxt的Nginx站点文件(通常在/etc/nginx/sites-available/damjanun.com),替换成下面的配置——保留原有的Nuxt代理规则,新增/blog的WordPress路由规则:

server {
    listen 443 ssl;
    server_name damjanun.com;

    # 保留你原来的SSL证书配置
    ssl_certificate /path/to/your/ssl/cert.pem;
    ssl_certificate_key /path/to/your/ssl/key.pem;

    # 主域名的Nuxt.js反向代理配置(保留你原来的设置)
    location / {
        proxy_pass http://localhost:3000; # 这里是Nuxt运行的端口,根据你的实际情况调整
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }

    # 子目录/blog的WordPress专属配置
    location /blog {
        root /var/www; # 注意:这里是WordPress目录的父目录,不是WordPress本身的目录
        index index.php index.html index.htm;

        # 优先处理静态资源,提升性能同时避免转发给PHP
        location ~* ^/blog/.+\.(jpg|jpeg|gif|css|png|js|ico|html)$ {
            expires 30d;
            access_log off;
        }

        # 处理PHP请求,适配WordPress的伪静态路由
        location ~ ^/blog/.+\.php$ {
            root /var/www;
            fastcgi_pass unix:/run/php/php8.2-fpm.sock; # 替换成你服务器上的PHP-FPM套接字路径,比如php7.4-fpm.sock
            fastcgi_index index.php;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            include fastcgi_params;
            # 必须设置这两个参数,否则WordPress的固定链接会失效
            fastcgi_param PATH_INFO $fastcgi_path_info;
            fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
        }
    }
}

# 80端口自动跳转HTTPS(保留原配置)
server {
    listen 80;
    server_name damjanun.com;
    return 301 https://$host$request_uri;
}

三、配置WordPress内部设置

  1. 先重启Nginx让配置生效:
    sudo systemctl restart nginx
    
  2. 访问https://damjanun.com/blog/wp-admin完成WordPress的安装(如果还没装的话)
  3. 登录WordPress后台后,进入设置 > 常规:
    • 将**WordPress地址(URL)**设置为 https://damjanun.com/blog
    • 将**站点地址(URL)**设置为 https://damjanun.com/blog
  4. 进入设置 > 固定链接,选择任意非默认的结构(比如「文章名」),点击保存——这一步会让WordPress生成正确的路由规则,即使Nginx不依赖.htaccess也必须做。

四、常见排错要点

  • 如果访问/blog出现404:检查Nginx错误日志(/var/log/nginx/error.log),看是不是路径写错了,或者PHP-FPM没启动
  • 如果出现500错误:检查WordPress目录的权限,或者PHP-FPM的配置是否正确
  • 如果Nuxt的路由异常:不用担心,Nginx会优先匹配更具体的/blog规则,主域名的请求还是会正常转发给Nuxt

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 11:04:13