php+apache+nginx 更换域名
php+apache+nginx 更换域名
- ✅ 第 1 步:确认到底是谁在监听 80/443
- ✅ 第 2 步:按监听者修改配置
- 🔹 场景 A:Apache 直接监听 80/443
- 🔹 场景 B:Nginx 监听 80/443,反向代理到 Apache
- ✅ 第 3 步:DNS & 本地 hosts 指向新域名
- ✅ 小结流程图
入职新公司做全栈开发,上个开发人员没有留下任何文档和源码,本身又不是php开发,领导给了一个需求,那就是更换域名,
“老域名”在 Nginx 里找不到,大概率是 Apache 在 80/443 端口监听,而 Nginx 只是反向代理或根本没用到。
要更换域名,只需弄清「谁真正在监听 80/443」并修改对应配置即可。下面给出排查-修改-验证三步法。
✅ 第 1 步:确认到底是谁在监听 80/443
# 1. 看哪个进程占用了 80 或 443
sudo netstat -tlnp | grep ':80\|:443'
# 或(新系统)
sudo ss -tlnp | grep ':80\|:443'
典型输出
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 1234/httpd
- httpd → Apache 在监听
- nginx → Nginx 在监听
✅ 第 2 步:按监听者修改配置
🔹 场景 A:Apache 直接监听 80/443
(Nginx 只是静态反向代理或根本没用到)
-
找到 Apache 虚拟主机文件
- Ubuntu/Debian:
/etc/apache2/sites-enabled/
- CentOS/RHEL:
/etc/httpd/conf.d/
或/etc/httpd/conf/extra/httpd-vhosts.conf
- Ubuntu/Debian:
-
把旧域名全部替换为新域名
<VirtualHost *:80>ServerName new.comServerAlias www.new.comDocumentRoot /home/www/new.com/htdocs </VirtualHost>
-
重载 Apache
sudo systemctl reload apache2 # Debian/Ubuntu sudo systemctl reload httpd # CentOS/RHEL
🔹 场景 B:Nginx 监听 80/443,反向代理到 Apache
-
在 Nginx 里找到
server_name
指令grep -R "old\.com" /etc/nginx/ /usr/local/nginx/conf/
没结果说明所有
.conf
文件里确实没有;可能:- 老配置放在
sites-available
却 没 link 到sites-enabled
- 老配置在自定义路径,如
/www/server/nginx/conf/vhost/old.com.conf
(宝塔/OneinStack 常见)
- 老配置放在
-
修改或新增 server 块
server {listen 80;server_name new.com www.new.com;root /home/www/new.com/htdocs;location ~ \.php$ {fastcgi_pass unix:/run/php/php7.4-fpm.sock; # 或 127.0.0.1:9000fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;include fastcgi_params;} }
-
重载 Nginx
sudo nginx -t && sudo systemctl reload nginx
✅ 第 3 步:DNS & 本地 hosts 指向新域名
- 域名解析:去 DNS 面板把
A
记录指向服务器 IP。 - 本地测试(可选):
echo "123.123.123.123 new.com www.new.com" | sudo tee -a /etc/hosts
✅ 小结流程图
┌──────────────┐
│ 谁是 80/443 监听者?│
└────┬─────────┘│┌───┴────────────┬─────────────────┐│ Apache 监听 │ Nginx 监听 ││ 修 Apache 配置 │ 修 Nginx 配置 ││ reload Apache │ reload Nginx │└────────────────┴─────────────────┘