Nginx 绑定域名

更新于 2026年7月23日

适用人群:已经把域名解析到服务器、需要在Nginx里配置该域名对应站点的开发者/运维

核心概念

server块与server_name的作用

Nginx用server块描述一个虚拟主机,server_name用来匹配请求头里的Host,决定一个请求该由哪个server块处理。同一台服务器可以有多个server块,分别绑定不同域名,实现"一台服务器多个站点"。

server_name支持精确匹配(example.com)、多域名(example.com www.example.com)、通配符(*.example.com)和简单正则,Nginx按匹配优先级(精确 > 前缀通配 > 后缀通配 > 正则)选择最合适的server块。

操作步骤

  1. 步骤 1定位或新建配置文件

    通常在 /etc/nginx/conf.d/ 或 /etc/nginx/sites-available/ 下新建一个以站点命名的.conf文件。

  2. 步骤 2编写server块并设置server_name

    在server块中写入 server_name example.com www.example.com;,声明该站点对应的域名。

  3. 步骤 3配置监听端口与内容来源

    设置listen 80;(后续HTTPS再加443),并配置root指向静态文件目录,或proxy_pass转发到后端应用端口。

  4. 步骤 4检测配置语法

    执行 nginx -t,确认没有语法错误再进行下一步,避免reload时因语法错误导致服务中断。

  5. 步骤 5重载配置生效

    执行 systemctl reload nginx(或 nginx -s reload),不中断已有连接的情况下应用新配置。

  6. 步骤 6验证绑定是否生效

    用 curl -H "Host: example.com" http://服务器IP 或直接用域名访问,确认返回了预期站点内容。

实际示例

# /etc/nginx/conf.d/example.conf
server {
    listen 80;
    server_name example.com www.example.com;

    root /var/www/example/html;
    index index.html;

    location / {
        try_files $uri $uri/ =404;
    }
}

如果是反向代理到Node/Java等后端应用:

server {
    listen 80;
    server_name example.com www.example.com;

    location / {
        proxy_pass http://127.0.0.1:3000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}
# 检测语法并重载
nginx -t && systemctl reload nginx

常见错误

  • ⚠️改完配置文件忘记执行nginx -t和reload,改动一直没生效
  • ⚠️多个server块使用了相同的server_name,造成匹配冲突,只有一个能生效
  • ⚠️只配置了80端口,后续加HTTPS时忘记server_name和证书里的域名要保持一致
  • ⚠️server_name和实际访问域名大小写/拼写不一致,导致Nginx走到default server返回错误内容

对应工具

常见问题

一个server块能绑定多个域名吗?
可以,在server_name后面用空格列出多个域名即可,例如 server_name a.com www.a.com b.com;。
修改Nginx配置后是要重启还是reload?
优先用 systemctl reload nginx 或 nginx -s reload,它会平滑加载新配置不中断现有连接;只有升级Nginx本身等特殊情况才需要重启。
泛域名(*.example.com)怎么配置?
在server_name里写 *.example.com(或用正则 ~^(?<sub>.+)\.example\.com$ ),并注意证书如需要同时覆盖泛域名,需申请通配符证书。
HTTP和HTTPS需要分别写server块吗?
通常需要,80端口的server块一般只做到HTTPS的301跳转,443端口单独一个server块配置证书和实际内容,参考 /tutorial/site-launch/https-setup。

相关教程

官方资料来源