核心是通过/etc/hosts将域名映射至本机或内网ip,再用nginx的server_name精准匹配该域名并路由到对应服务;需确保hosts格式正确、server_name大小写一致且被主配置include,最后nginx -t校验并-s reload生效。

要在 Linux 上用 Nginx 的 server_name 配合本地 /etc/hosts 实现域名测试,核心是让请求“看起来像访问真实域名”,实则走本机回环或内网地址。整个过程不依赖公网 DNS,只对当前机器生效,适合前后端联调、多项目并行开发等场景。
一、配置本地 hosts 映射域名到 IP
编辑系统 hosts 文件,把自定义域名指向目标服务器地址(通常是本机 127.0.0.1 或局域网中某台开发机):
- 执行命令:
sudo vim /etc/hosts - 添加一行(示例):
127.0.0.1 web.local api.local admin.local - 保存退出后,立即生效,无需重启网络服务
- 验证是否生效:运行
ping web.local或curl -I http://web.local,看到响应即表示映射成功
二、Nginx 中正确配置 server_name
server_name 必须与 hosts 中写的域名完全一致(支持空格分隔多个,也支持通配符或正则),Nginx 才能匹配路由:
Linux系统管理专家,覆盖12大模块:用户权限、SSH、存储、网络、systemd、防火墙、日志监控、备份恢复、TLS证书、Ansible、容器、IaC。提供配置、验证、加固、监控、备份、自动化、故障排查、回滚闭环。关键词:useradd、sudo、sshd_config、chmod、SEL...
- 在
/etc/nginx/sites-available/或/usr/local/nginx/conf/vhost/下新建配置文件,如web.local.conf - 写入标准 server 块,关键字段如下:
listen 80;
server_name web.local;
root /var/www/web;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}
- 若需同时支持多个域名,可写成:
server_name web.local www.web.local; - 注意:Nginx 不会自动加载新配置文件,需手动软链接到
sites-enabled(Debian/Ubuntu)或包含进主配置(CentOS/源码安装)
三、启用配置并验证访问
完成配置后,必须重载 Nginx 才能让改动生效:
- 检查语法是否正确:
sudo nginx -t(返回 “syntax is ok” 才继续) - 重载配置:
sudo nginx -s reload(不中断服务) - 浏览器访问
http://web.local,应能打开对应 root 目录下的页面 - 如遇 404,确认 root 路径存在且有 index.html;如遇连接拒绝,检查 listen 端口是否被占用、防火墙是否放行 80 端口
四、常见问题快速定位
调试时最常卡在这几个点:
- hosts 写错格式:IP 和域名之间必须用空格或制表符分隔,不能用等号或冒号
-
server_name 大小写敏感:必须全小写,且不能带协议(如不要写
http://web.local) -
配置未生效:确认该 conf 文件已被主配置
include,例如include /etc/nginx/sites-enabled/*; -
缓存干扰:浏览器可能缓存了旧的 DNS 或 301 重定向,可尝试无痕模式或加时间戳参数(如
?t=1)










