Ubuntu 系统下 Nginx 域名绑定详解
在 Linux 服务器管理中,域名绑定是网站部署的核心环节之一,本文将以 Ubuntu 系统和 Nginx 服务器为例,详细讲解域名的绑定流程,包括环境准备、配置文件修改、SSL 证书部署及常见问题解决等内容,帮助用户顺利完成多域名管理。

环境准备:安装 Nginx 与域名解析
在开始域名绑定前,需确保服务器已安装 Nginx 并完成域名解析。
1 安装 Nginx
Ubuntu 系统可通过 apt 包管理器安装 Nginx,执行以下命令更新软件包列表并安装:
sudo apt update sudo apt install nginx -y
安装完成后,通过 systemctl status nginx 检查服务状态,确保 Nginx 已正常运行,默认情况下,Nginx 配置文件位于 /etc/nginx/ 目录,主配置文件为 nginx.conf,站点配置文件存放在 /etc/nginx/sites-available/ 目录。
2 域名解析配置
登录域名注册商管理后台(如阿里云、腾讯云等),将域名解析指向服务器的公网 IP 地址,绑定域名 example.com 和 www.example.com,需添加两条 A 记录,记录值均为服务器 IP,解析生效时间通常为几分钟至几小时,可通过 ping 命令验证:
ping example.com
若返回服务器 IP,则解析成功。
Nginx 域名绑定核心配置
Nginx 通过 server 块定义不同域名的配置,每个 server 块对应一个站点,以下是单域名和多域名的绑定方法。
1 单域名绑定
以 example.com 为例,创建站点配置文件 /etc/nginx/sites-available/example.com:

server {
listen 80;
server_name example.com www.example.com;
root /var/www/example.com/html;
index index.html index.htm;
location / {
try_files $uri $uri/ =404;
}
error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /var/www/html;
}
}
配置说明:
listen 80:监听 80 端口(HTTP);server_name:绑定域名,可同时写主域名和带www的子域名;root:网站根目录,需提前创建并赋予正确权限:sudo mkdir -p /var/www/example.com/html sudo chown -R $USER:$USER /var/www/example.com/html sudo chmod -R 755 /var/www/example.com/html
index:默认首页文件名。
创建配置文件后,需通过符号链接启用站点:
sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
2 多域名绑定
若需在同一服务器部署多个站点(如 example.com 和 test.com),可创建多个 server 块,以 test.com 为例,配置文件如下:
server {
listen 80;
server_name test.com www.test.com;
root /var/www/test.com/html;
index index.html index.php;
location / {
try_files $uri $uri/ =404;
}
# PHP 示例(可选)
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php8.1-fpm.sock;
}
}
注意事项:
- 不同域名的
root路径必须唯一,避免文件冲突; - 若网站使用 PHP 等动态语言,需配置
fastcgi_pass参数(版本号需与系统安装的 PHP-FPM 版本一致)。
SSL 证书配置与 HTTPS 启用
现代网站普遍采用 HTTPS 协议,需为域名安装 SSL 证书,本文以免费证书 Let’s Encrypt 为例,通过 Certbot 工具自动签发。
1 安装 Certbot
sudo apt install certbot python3-certbot-nginx -y
2 获取并部署证书
执行以下命令自动获取证书并配置 Nginx:
sudo certbot --nginx -d example.com -d www.example.com
根据提示输入邮箱地址并同意服务条款,Certbot 会自动修改 Nginx 配置,添加 443 端口监听和 SSL 相关参数,配置文件如下:

server {
listen 443 ssl;
server_name example.com www.example.com;
root /var/www/example.com/html;
index index.html;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
location / {
try_files $uri $uri/ =404;
}
}
自动续期:Let’s Encrypt 证书有效期为 90 天,Certbot 会自动设置定时任务续期,可通过 sudo certbot renew --dry-run 测试续期是否正常。
3 强制 HTTPS 访问
在 HTTP 配置的 server 块中添加重定向规则,强制跳转至 HTTPS:
server {
listen 80;
server_name example.com www.example.com;
return 301 https://$host$request_uri;
}
配置文件优化与常见问题解决
1 Nginx 配置优化
- 虚拟目录配置:通过
alias指令实现虚拟目录,例如将/images映射至/var/www/static/images:location /images { alias /var/www/static/images; autoindex on; # 开启目录列表 } - 访问控制:通过
allow/deny限制 IP 访问,例如仅允许 192.168.1.0/24 网段访问:location /admin { allow 192.168.1.0/24; deny all; }
2 常见问题排查
- 502 Bad Gateway:通常因 PHP-FPM 或后端服务未启动导致,检查
fastcgi_pass路径是否正确,并执行sudo systemctl restart php8.1-fpm重启服务。 - 404 Not Found:检查
root路径是否存在,或location匹配规则是否正确。 - 域名无法访问:确认域名解析是否生效,Nginx 配置语法是否正确(可通过
sudo nginx -t验证),以及防火墙是否放行 80/443 端口(Ubuntu 默认使用 UFW,执行sudo ufw allow 'Nginx Full'开放端口)。
多域名管理实践
当服务器需绑定多个域名时,可通过以下方式提升管理效率:
1 配置文件模板化
将重复配置(如 SSL、日志格式)提取至 nginx.conf 的 http 块中,避免冗余:
http {
# SSL 默认配置
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
# 日志格式
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
}
2 域名与目录对应表
| 域名 | 网站根目录 | 用途 |
|---|---|---|
| example.com | /var/www/example.com | 主站 |
| blog.example.com | /var/www/blog.example.com | 博客子系统 |
| api.example.com | /var/www/api.example.com | 接口服务(需 CORS) |
在 Ubuntu 系统下通过 Nginx 绑定域名,需完成域名解析、配置文件编写、SSL 证书部署及服务重启等步骤,合理规划 server 块结构、优化配置参数并掌握常见问题排查方法,可有效提升网站部署效率,对于多域名管理,建议采用模板化配置和清晰的目录结构,以降低维护复杂度,通过本文的实践,用户可快速掌握 Nginx 域名绑定的核心技能,为后续网站运维奠定基础。




















