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

CentOS 7虚拟机搭配cPanel邮件服务器部署Next.js应用遇阻

排查cPanel/WHM环境下Next.js部署后Apache虚拟主机失效问题

以下是针对你遇到的子域名显示cPanel默认页问题的具体排查方向和解决方案:

1. 检查cPanel自动生成的虚拟主机配置冲突

cPanel会自动为所有通过面板创建的子域名生成专属Apache配置文件,优先级高于手动添加的sites-enabled配置:

  • 登录cPanel面板进入子域名页面,确认目标子域名是否存在。若存在,cPanel会自动生成指向/home/[你的用户名]/public_html/[子域名]的配置,直接覆盖你手动设置的反向代理规则。
  • 解决方式:要么删除cPanel中创建的该子域名,要么通过cPanel的Apache包含功能(路径:高级 → Apache包含)添加自定义反向代理配置,覆盖默认的DocumentRoot设置。

2. 验证Apache虚拟主机加载顺序

执行以下命令查看Apache加载的虚拟主机顺序及匹配规则:

httpd -S

输出结果中会列出所有NameVirtualHost条目,检查目标子域名对应的虚拟主机是否为你手动配置的那一条。如果cPanel自动生成的配置排在前面,Apache会优先匹配它,导致显示默认页。

3. 检查SELinux上下文限制

CentOS 7默认启用SELinux,若Next.js部署目录不在cPanel默认的/home/[用户名]/路径下,SELinux会阻止Apache访问该目录,触发默认页 fallback:

  • 查看目录SELinux上下文:
ls -Z /path/to/nextjs/build
  • 若上下文不是httpd_sys_content_t,执行以下命令修复:
chcon -Rv --type=httpd_sys_content_t /path/to/nextjs/build

(如需永久生效,可使用semanage fcontext命令)

4. 确认PM2服务监听状态

验证Next.js应用是否正常监听指定端口:

ss -tulpn | grep :[你的端口号]

确保输出中存在node进程,且端口未被其他程序占用。若进程未启动,重新启动PM2服务:

pm2 restart [你的应用名称]

5. 验证Apache反向代理配置正确性

若你使用反向代理指向PM2端口,确保subdomain.conf中的配置无语法错误:

<VirtualHost *:80>
    ServerName subdomain.yourdomain.com
    ProxyPreserveHost On
    ProxyPass / http://localhost:[你的端口号]/
    ProxyPassReverse / http://localhost:[你的端口号]/
    ErrorLog /var/log/httpd/subdomain-error.log
    CustomLog /var/log/httpd/subdomain-access.log combined
</VirtualHost>

同时检查Apache是否启用了必要模块:

httpd -M | grep proxy

需确保proxy_module和proxy_http_module已加载(cPanel环境下通常默认启用)。

6. 检查Apache配置语法及重载状态

执行以下命令验证配置文件语法:

httpd -t

若存在语法错误,修复后重新重载Apache:

systemctl reload httpd

注意:手动修改httpd.conf添加sites-enabled包含规则后,需确保cPanel不会在重建Apache配置时覆盖该修改。cPanel默认会定期重建配置,建议通过cPanel的Apache包含功能添加自定义配置,而非直接修改主配置文件。


内容的提问来源于stack exchange,提问作者Safvan-tsy

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 21:28:35