核心是两步:改本地hosts文件将域名指向127.0.0.1,再在Nginx中用server_name精确匹配该域名;需确保拼写一致、语法正确、重载配置,并通过ping和nginx -t验证。

直接在本地开发中用自定义域名访问 Nginx 服务,核心就两步:让系统认得这个域名(改 hosts),再让 Nginx 知道该用哪个配置响应它(设 server_name)。不复杂但容易忽略细节。
改本地 hosts 文件,把域名指向本机
这是让浏览器发出的请求能落到你本地 Nginx 的第一步。系统不会自动查 DNS,而是先查 hosts —— 所以你得手动告诉它“web.local 就是 127.0.0.1”。
- Linux/macOS:用 sudo vim /etc/hosts,加一行:
127.0.0.1 web.local api.local admin.local - Windows:编辑 C:\Windows\System32\drivers\etc\hosts(需管理员权限打开记事本),同样添加上面那行
- 保存后立即生效,不用重启网络。验证方式:ping web.local 应返回 127.0.0.1;curl -I http://web.local 应有 HTTP 响应头
Nginx 配置 server_name 要和 hosts 里写的完全一致
server_name 不是“起个名字”,而是严格匹配 HTTP 请求头里的 Host 字段。比如浏览器访问 http://web.local,请求头里 Host 就是 web.local,Nginx 只有配置了 server_name web.local; 才会选中这个 server 块。
- 支持多个域名,空格分隔:
server_name web.local www.web.local; - 支持通配符:
server_name *.web.local;(匹配 dev.web.local、api.web.local,但不匹配 web.local) - 不要写成
server_name http://web.local;或带端口,只写纯域名 - 常见错误:大小写混用(web.local 和 Web.Local 不等价)、多写了空格或中文符号、漏掉分号
配置完必须重载 Nginx,不能只改文件
修改 hosts 是系统级生效,但改 Nginx 配置后,Nginx 进程并不自动读取新内容。必须显式通知它重新加载:
- Debian/Ubuntu:sudo nginx -t && sudo systemctl reload nginx
- CentOS 或源码安装:sudo nginx -t && sudo nginx -s reload
-
nginx -t一定要先执行——它检查语法是否正确,避免 reload 失败导致服务中断 - 如果用了 sites-available/sites-enabled 结构,记得创建软链接:sudo ln -sf /etc/nginx/sites-available/web.local.conf /etc/nginx/sites-enabled/
测试失败?先看这三个地方
访问 http://web.local 没反应或 502/404,别急着重装,按顺序排查:
- hosts 是否真生效?nslookup web.local 或 dig web.local 看解析结果是不是 127.0.0.1
- server_name 是否拼写完全一致?包括点、连字符、大小写,且没多余空格
- Nginx 日志有没有报错?tail -f /var/log/nginx/error.log 最常暴露 listen 端口冲突、root 目录不存在、权限拒绝等问题


















