Nginx 多域名配置指南轻松实现多站点托管

域名

Nginx 多域名配置指南轻松实现多站点托管

2025-05-04 18:05


本文详细介绍了如何在Nginx中配置多个域名,包括创建站点配置文件、启用站点配置、配置域名解析、验证配置以及高级配置如SSL/TLS和负载均衡。

nginx 多个域名配置指南

在现代的Web开发和运维中,Nginx 作为一款高性能的HTTP和反向代理服务器,广泛应用于各种场景。尤其是当需要在一个服务器上托管多个域名时,Nginx 的配置显得尤为重要。本文将详细介绍如何在Nginx中配置多个域名,帮助你轻松实现多站点托管。

1. Nginx 简介

Nginx(发音为“engine-x”)是一款轻量级的Web服务器,以其高性能和稳定性著称。它不仅可以作为HTTP服务器,还可以作为反向代理、负载均衡器和邮件代理服务器。Nginx 的配置文件简洁明了,易于理解和维护,是许多开发者和运维人员的首选。

2. 环境准备

在开始配置多个域名之前,确保你的服务器已经安装了Nginx。如果没有安装,可以使用以下命令进行安装(以Ubuntu系统为例):

sudo apt update
sudo apt install nginx

安装完成后,可以通过以下命令启动Nginx服务:

sudo systemctl start nginx

确保Nginx服务已经成功启动,可以使用以下命令检查状态:

sudo systemctl status nginx

3. 配置多个域名

3.1 创建站点配置文件

Nginx 的配置文件通常位于 /etc/nginx/sites-available/ 目录下。为了方便管理和维护,建议为每个域名创建一个独立的配置文件。假设我们需要配置两个域名:example.comexample.org,可以按照以下步骤操作:

  1. 创建配置文件

    sudo nano /etc/nginx/sites-available/example.com
    sudo nano /etc/nginx/sites-available/example.org
  2. 编写配置文件

    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;
        }
    
        access_log /var/log/nginx/example.com.access.log;
        error_log /var/log/nginx/example.com.error.log;
    }

    example.org 编写配置文件:

    server {
        listen 80;
        server_name example.org www.example.org;
    
        root /var/www/example.org/html;
        index index.html index.htm;
    
        location / {
            try_files $uri $uri/ =404;
        }
    
        access_log /var/log/nginx/example.org.access.log;
        error_log /var/log/nginx/example.org.error.log;
    }

3.2 启用站点配置

创建好配置文件后,需要将它们链接到 sites-enabled 目录下,以便Nginx能够识别并使用这些配置文件。

  1. 创建符号链接

    sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
    sudo ln -s /etc/nginx/sites-available/example.org /etc/nginx/sites-enabled/
  2. 测试配置文件

    在启用新的配置文件之前,建议先测试配置文件的正确性,以避免因配置错误导致Nginx无法启动。

    sudo nginx -t

    如果测试结果显示配置文件没有问题,可以继续下一步。

  3. 重启Nginx服务

    重启Nginx服务以应用新的配置:

    sudo systemctl restart nginx

4. 配置域名解析

配置好Nginx后,还需要在域名注册商的管理后台将域名解析到你的服务器IP地址。具体步骤如下:

  1. 登录域名注册商的管理后台
  2. 找到DNS管理页面
  3. 添加A记录,将域名指向你的服务器IP地址。

例如,为 example.comexample.org 添加A记录:

  • 主机记录@记录值你的服务器IP地址
  • 主机记录www记录值你的服务器IP地址

5. 验证配置

配置完成后,可以通过浏览器访问 http://example.comhttp://example.org,确保页面能够正常显示。如果遇到问题,可以查看Nginx的日志文件进行排查。

  • 访问日志/var/log/nginx/example.com.access.log
  • 错误日志/var/log/nginx/example.com.error.log

6. 高级配置

6.1 SSL/TLS 配置

为了提高网站的安全性,建议为每个域名配置SSL/TLS证书。可以使用Let's Encrypt提供的免费证书,通过Certbot工具进行配置。

  1. 安装Certbot

    sudo apt install certbot python3-certbot-nginx
  2. 获取证书

    sudo certbot --nginx -d example.com -d www.example.com -d example.org -d www.example.org
  3. 自动续期

    Certbot会在系统中设置一个定时任务,自动续期证书。可以通过以下命令检查定时任务:

    sudo systemctl status certbot.timer

6.2 负载均衡

如果需要为多个域名提供负载均衡,可以在Nginx中配置反向代理。假设你有两台后端服务器,可以按照以下步骤操作:

  1. 创建负载均衡配置文件

    sudo nano /etc/nginx/sites-available/loadbalancer
  2. 编写配置文件

    upstream backend {
        server 192.168.1.100;
        server 192.168.1.101;
    }
    
    server {
        listen 80;
        server_name example.com www.example.com;
    
        location / {
            proxy_pass http://backend;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
        }
    }
    
    server {
        listen 80;
        server_name example.org www.example.org;
    
        location / {
            proxy_pass http://backend;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
        }
    }
  3. 启用负载均衡配置

    sudo ln -s /etc/nginx/sites-available/loadbalancer /etc/nginx/sites-enabled/
    sudo systemctl restart nginx

7. 总结

通过本文的介绍,你应该已经掌握了如何在Nginx中配置多个域名。无论是简单的静态网站,还是复杂的动态应用,Nginx 都能轻松应对。希望这些配置步骤对你有所帮助,如果你有任何问题或建议,欢迎在评论区留言交流。


標簽: Nginx 多个域名 配置文件 负载均衡 SSL/TLS