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

求助:在AWS Lightsail WordPress站点特定路径部署React应用

解决Apache托管WordPress站点下部署Next.js到特定路径的问题

核心思路

通过Apache反向代理将/TEST路径的请求转发到本地运行的Next.js服务(localhost:3000),同时配置Next.js适配子路径路由,避免与WordPress的路由规则冲突。


步骤1:启用Apache必要模块

反向代理依赖mod_proxy、mod_proxy_http和mod_rewrite模块,先确保它们已启用:

sudo a2enmod proxy proxy_http rewrite
sudo systemctl restart apache2

步骤2:配置Next.js适配子路径

因为要部署在/TEST路径下,必须修改Next.js的next.config.js添加basePath,否则路由和资源加载会出错:

// next.config.js
module.exports = {
  basePath: '/TEST',
  // 若使用HTTPS,可添加assetPrefix确保资源路径正确
  // assetPrefix: '/TEST',
}

修改后重启Next.js服务,确保它仍运行在localhost:3000。

步骤3:配置Apache反向代理规则

不要新建虚拟主机,直接在现有WordPress站点的Apache配置中添加代理规则:

  1. 找到WordPress的Apache配置文件,通常位于/etc/apache2/sites-available/wordpress.conf(或类似路径)
  2. 在<VirtualHost *:80>(或*:443,若启用HTTPS)块内添加以下配置:
<Location "/TEST">
    ProxyPass "http://localhost:3000/TEST"
    ProxyPassReverse "http://localhost:3000/TEST"
    ProxyPreserveHost On
    # 若启用HTTPS,需添加以下行
    # SSLProxyEngine On
</Location>
  1. 保存配置后重启Apache:
sudo systemctl restart apache2

替代方案:使用.htaccess配置(适合无root权限场景)
在WordPress根目录的.htaccess文件开头添加以下规则(放在WordPress默认Rewrite规则之前):

RewriteEngine On
RewriteRule ^TEST/(.*)$ http://localhost:3000/TEST/$1 [P,L]

注意:需确保Apache配置中对应目录的AllowOverride All已启用,否则.htaccess规则不生效。

步骤4:配置Lightsail防火墙与Next.js开机自启

  • 防火墙:无需开放3000端口给公网(Next.js仅本地运行),确保80/443端口已开放即可(WordPress已正常访问则无需修改)。
  • 开机自启:为避免服务器重启后Next.js服务中断,配置systemd服务:
    1. 创建服务文件:
    sudo nano /etc/systemd/system/nextjs-test.service
    
    1. 写入以下内容(替换路径和用户为实际值):
    [Unit]
    Description=Next.js Test Application
    After=network.target
    
    [Service]
    User=ubuntu
    WorkingDirectory=/home/ubuntu/your-nextjs-app
    ExecStart=/usr/bin/npm run start
    Restart=always
    Environment=NODE_ENV=production
    
    [Install]
    WantedBy=multi-user.target
    
    1. 启用并启动服务:
    sudo systemctl enable nextjs-test
    sudo systemctl start nextjs-test
    

排查常见问题

  • 500错误:查看Apache错误日志tail -f /var/log/apache2/error.log,检查是否模块未启用或路径配置错误。
  • 404错误:确认Next.js的basePath设置正确,且Apache代理规则路径匹配一致;本地执行curl http://localhost:3000/TEST验证Next.js服务是否正常响应。
  • 静态资源加载失败:检查Next.js的assetPrefix是否配置,或Apache是否正确转发了静态资源请求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 21:37:47