插件窝 干货文章 Nginx怎么实现一个站点配置多个域名

Nginx怎么实现一个站点配置多个域名

example index server 配置 236    来源:    2025-04-21

Nginx 配置多个域名指向同一个站点

在 Nginx 中,您可以通过以下几种方式实现一个站点配置多个域名:

方法一:使用 server_name 指令配置多个域名

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

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

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

方法二:使用通配符域名

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

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

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

方法三:使用正则表达式匹配域名

server {
    listen 80;
    server_name ~^(www\.)?example\.(com|net|org)$;

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

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

方法四:使用多个 server 块(适用于需要不同配置的情况)

server {
    listen 80;
    server_name example.com;

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

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

server {
    listen 80;
    server_name example.net;

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

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

HTTPS 配置示例

server {
    listen 443 ssl;
    server_name example.com www.example.com example.net www.example.net;

    ssl_certificate /path/to/your/certificate.crt;
    ssl_certificate_key /path/to/your/private.key;

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

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

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

注意事项

  1. 确保所有域名都已正确解析到服务器 IP
  2. 如果使用 HTTPS,需要为所有域名配置 SSL 证书(可以使用通配符证书或多域名证书)
  3. 配置完成后,使用 nginx -t 测试配置是否正确
  4. 使用 systemctl reload nginxservice nginx reload 重新加载配置

以上方法可以根据您的具体需求选择使用,第一种方法是最简单直接的解决方案。