服务器测评网
我们一直在努力

ubuntu nginx如何绑定多个域名?

Ubuntu 系统下 Nginx 域名绑定详解

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

ubuntu nginx如何绑定多个域名?

环境准备:安装 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.comwww.example.com,需添加两条 A 记录,记录值均为服务器 IP,解析生效时间通常为几分钟至几小时,可通过 ping 命令验证:

ping example.com

若返回服务器 IP,则解析成功。

Nginx 域名绑定核心配置

Nginx 通过 server 块定义不同域名的配置,每个 server 块对应一个站点,以下是单域名和多域名的绑定方法。

1 单域名绑定

example.com 为例,创建站点配置文件 /etc/nginx/sites-available/example.com

ubuntu nginx如何绑定多个域名?

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.comtest.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 相关参数,配置文件如下:

ubuntu nginx如何绑定多个域名?

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.confhttp 块中,避免冗余:

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 域名绑定的核心技能,为后续网站运维奠定基础。

赞(0)
未经允许不得转载:好主机测评网 » ubuntu nginx如何绑定多个域名?