如何在Nginx中为IP配置子域名?测试绑定失败求助
在Nginx中结合IP设置子域名的解决方案
首先得说清楚:你遇到的teste.x.x.x.x配置不生效的核心原因——这种格式并不是“带前缀的IP地址”,而是一个需要解析的域名。浏览器或客户端会把它当成普通域名去查DNS,但你既没在本地hosts里映射,也没在公网DNS上配置记录,自然找不到服务器,Nginx也就收不到请求。
下面分两种场景给你具体的解决步骤:
一、本地/测试环境:用hosts文件快速搞定
如果只是自己测试用,不需要公网访问,直接修改本地hosts文件就能解决:
- Windows:打开
C:\Windows\System32\drivers\etc\hosts(需要管理员权限) - Linux/macOS:编辑
/etc/hosts(用sudo nano /etc/hosts)
在文件末尾添加上这两行,把x.x.x.x替换成你的服务器实际IP:
x.x.x.x teste.x.x.x.x x.x.x.x teste2.x.x.x.x
保存后刷新本地DNS缓存:
- Windows:打开命令提示符,输入
ipconfig /flushdns - Linux:
sudo systemd-resolve --flush-caches(不同发行版可能略有差异) - macOS:
sudo dscacheutil -flushcache
二、公网生产环境:配置DNS解析
如果要让外网用户也能访问,你需要在DNS服务商后台配置A记录:
- 登录你的域名管理后台(比如阿里云、Cloudflare等)
- 添加两条A记录:
- 第一条:主机记录填
teste,记录值填你的服务器IPx.x.x.x - 第二条:主机记录填
teste2,记录值同样填x.x.x.x
注意:这里不建议用
teste.x.x.x.x这种格式,因为大部分DNS服务商不支持把IP段作为域名后缀。更合理的做法是用一个已备案的主域名(比如example.com),然后配置teste.example.com指向你的IP,这样既符合域名规范,也方便后续配置HTTPS。 - 第一条:主机记录填
三、Nginx的正确配置示例
不管用哪种方法,你的Nginx server块配置要确保正确:
server { listen 80; # 如果用HTTPS就改成443,并加上ssl相关配置 server_name teste.x.x.x.x teste2.x.x.x.x; # 替换成你的网站根目录和默认页面 root /var/www/teste-site; index index.html index.php; location / { try_files $uri $uri/ =404; } }
配置完一定要重载Nginx让配置生效:
# Linux/macOS sudo nginx -s reload # Windows(如果是服务安装版) net stop nginx && net start nginx
四、验证配置是否正常
可以用curl命令直接测试,绕开DNS解析,确认Nginx是否正确响应:
curl -H "Host: teste.x.x.x.x" http://x.x.x.x
如果返回你的网站内容,说明Nginx配置没问题,剩下的就是确保客户端能正确解析teste.x.x.x.x这个“域名”。
额外提醒
- 如果要配置HTTPS,
teste.x.x.x.x这类格式很难申请到正规SSL证书(CA机构一般不签发IP前缀的证书),所以还是建议改用正常的子域名(比如teste.example.com)。 - 如果你想匹配所有前缀的“IP子域名”,可以把
server_name改成*.x.x.x.x,但同样需要对应的hosts或DNS配置支持。
内容的提问来源于stack exchange,提问作者Diogo Silva
相关产品推荐
相关产品推荐

