Nginx多域名配置指南轻松管理多个网站

域名

Nginx多域名配置指南轻松管理多个网站

2025-05-08 21:24


本文详细介绍了如何在 Nginx 中配置多个域名,包括创建和启用配置文件、测试和重新加载 Nginx,以及高级配置如 HTTPS 和自定义错误页面,帮助你在同一服务器上托管多个网站。

nginx配置多域名

在现代Web开发中,Nginx 作为一款高性能的 HTTP 和反向代理服务器,被广泛应用于各种网站和应用中。其中,配置多域名的能力是它的一大亮点。本文将详细介绍如何在 Nginx 中配置多个域名,帮助你在同一个服务器上托管多个网站。

什么是多域名配置?

多域名配置指的是在同一个服务器上,通过 Nginx 配置文件,使多个域名指向同一个 IP 地址,并且每个域名可以独立配置不同的网站内容。这种配置方式不仅节省了服务器资源,还方便了网站管理和维护。

前提条件

在开始配置多域名之前,确保你已经完成了以下准备工作:

  1. 安装 Nginx:确保你的服务器上已经安装了 Nginx。如果没有安装,可以使用以下命令进行安装(以 Ubuntu 为例):

    sudo apt update
    sudo apt install nginx
  2. 域名解析:确保你的域名已经解析到服务器的 IP 地址。你可以在域名注册商的管理面板中进行 DNS 解析设置。

  3. 网站文件:确保你已经准备好了每个域名对应的网站文件,并且这些文件已经上传到服务器的指定目录。

配置步骤

1. 创建 Nginx 配置文件

Nginx 的配置文件通常位于 /etc/nginx/sites-available/ 目录下。每个域名可以有一个独立的配置文件。假设我们要配置两个域名:example1.comexample2.com

创建 example1.com 的配置文件

sudo nano /etc/nginx/sites-available/example1.com

在文件中添加以下内容:

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

    root /var/www/html/example1.com;
    index index.html index.htm;

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

创建 example2.com 的配置文件

sudo nano /etc/nginx/sites-available/example2.com

在文件中添加以下内容:

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

    root /var/www/html/example2.com;
    index index.html index.htm;

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

2. 启用配置文件

创建配置文件后,需要将它们链接到 sites-enabled 目录,以便 Nginx 能够加载这些配置。

sudo ln -s /etc/nginx/sites-available/example1.com /etc/nginx/sites-enabled/
sudo ln -s /etc/nginx/sites-available/example2.com /etc/nginx/sites-enabled/

3. 测试配置文件

在重新加载 Nginx 之前,建议先测试配置文件是否有语法错误。

sudo nginx -t

如果测试结果显示没有错误,可以继续进行下一步。

4. 重新加载 Nginx

sudo systemctl reload nginx

重新加载 Nginx 后,配置文件中的更改将生效。

高级配置

HTTPS 配置

为了提高网站的安全性,建议为每个域名配置 HTTPS。你可以使用 Let's Encrypt 提供的免费 SSL 证书。

安装 Certbot

sudo apt install certbot python3-certbot-nginx

获取并安装 SSL 证书

sudo certbot --nginx -d example1.com -d www.example1.com
sudo certbot --nginx -d example2.com -d www.example2.com

Certbot 会自动修改 Nginx 配置文件,添加必要的 SSL 配置。

重定向 HTTP 到 HTTPS

为了确保所有请求都通过 HTTPS 访问,可以在 Nginx 配置文件中添加重定向规则。

修改 example1.com 的配置文件

server {
    listen 80;
    server_name example1.com www.example1.com;
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl;
    server_name example1.com www.example1.com;

    ssl_certificate /etc/letsencrypt/live/example1.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example1.com/privkey.pem;

    root /var/www/html/example1.com;
    index index.html index.htm;

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

修改 example2.com 的配置文件

server {
    listen 80;
    server_name example2.com www.example2.com;
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl;
    server_name example2.com www.example2.com;

    ssl_certificate /etc/letsencrypt/live/example2.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example2.com/privkey.pem;

    root /var/www/html/example2.com;
    index index.html index.htm;

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

自定义错误页面

你可以为每个域名配置自定义的错误页面,以提升用户体验。

修改 example1.com 的配置文件

server {
    listen 443 ssl;
    server_name example1.com www.example1.com;

    ssl_certificate /etc/letsencrypt/live/example1.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example1.com/privkey.pem;

    root /var/www/html/example1.com;
    index index.html index.htm;

    error_page 404 /404.html;
    error_page 500 502 503 504 /50x.html;

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

    location = /404.html {
        internal;
    }

    location = /50x.html {
        internal;
    }
}

修改 example2.com 的配置文件

server {
    listen 443 ssl;
    server_name example2.com www.example2.com;

    ssl_certificate /etc/letsencrypt/live/example2.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example2.com/privkey.pem;

    root /var/www/html/example2.com;
    index index.html index.htm;

    error_page 404 /404.html;
    error_page 500 502 503 504 /50x.html;

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

    location = /404.html {
        internal;
    }

    location = /50x.html {
        internal;
    }
}

总结

通过以上步骤,你可以在同一个 Nginx 服务器上配置多个域名,并为每个域名提供独立的网站内容。此外,通过配置 HTTPS 和自定义错误页面,可以进一步提升网站的安全性和用户体验。

如果你在配置过程中遇到任何问题,可以参考 Nginx 官方文档或社区论坛,获取更多帮助和支持。希望本文对你有所帮助,祝你在 Nginx 多域名配置的道路上顺利前行!


label : Nginx 多域名 配置文件 HTTPS 自定义错误页面