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

Nginx修改server_name为域名后网站404,求正确配置方法

解决Nginx修改server_name后返回404的问题

嘿,这情况我之前帮朋友排查过,咱们一步步来搞定它!

可能的原因及对应解决步骤

1. 网站根目录配置不匹配

当你把server_name从localhost改成域名后,要确保当前server块里的root路径和之前localhost配置的完全一致,或者这个路径下确实存在你的网站文件。

比如之前localhost的server块是这样的:

server {
    listen 80;
    server_name localhost;
    root /var/www/html; # 这个路径是关键
    index index.html;
}

那修改后的域名server块必须保持同样的root路径,否则Nginx找不到文件就会返回404。检查你的配置,确保root指向正确的网站文件目录。

2. DNS解析未生效

你得先确认my-domain.in和www.my-domain.in已经正确解析到你的服务器IP。在本地终端运行:

nslookup my-domain.in

或者

ping my-domain.in

如果返回的IP不是你的服务器地址,那得先去域名服务商那里设置正确的A记录,等解析生效(一般几分钟到几小时)后再测试。

3. Nginx server块优先级冲突

如果你的Nginx配置里有多个监听80端口的server块,比如原来的localhost server块还在,或者有一个带default_server参数的默认块,那访问域名时可能没匹配到你修改的那个server块,而是落到了其他返回404的块里。

运行这个命令查看所有生效的Nginx配置:

nginx -T

仔细看输出里的server块,找到监听80的部分。如果有其他server块带listen 80 default_server;,要么把你的域名server块加上这个参数,要么删除多余的默认块,确保域名请求能匹配到正确的server块。

4. 文件权限问题

Nginx运行用户(通常是www-data)需要有访问网站根目录文件的权限。运行下面的命令检查权限:

ls -l /path/to/your/website/files

如果文件的所有者不是www-data,用这个命令修改:

chown -R www-data:www-data /path/to/your/website/files

修改后重新加载Nginx:

systemctl reload nginx

5. 查看Nginx日志找线索

这是最直接的排查方法!查看错误日志:

tail -f /var/log/nginx/error.log

还有访问日志:

tail -f /var/log/nginx/access.log

日志里会明确告诉你404的原因——比如是文件不存在、路径错误,还是请求没匹配到正确的server块,跟着线索调整配置就行。

配置Let's Encrypt SSL的后续步骤

等上面的问题解决,网站用域名能正常访问后,直接用certbot自动配置SSL就行:

certbot --nginx

它会自动修改你的Nginx配置,添加HTTPS的server块,同时配置自动续期,非常省心。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:17:55