插件窝 干货文章 nginx怎么区分多个域名

nginx怎么区分多个域名

配置 server domain Nginx 844    来源:    2025-04-07

在Nginx中区分多个域名的方法

在Nginx服务器上配置多个域名(虚拟主机)是常见的需求。以下是几种主要方法:

1. 基于server_name的虚拟主机配置

这是最常用的方法,通过不同的server_name指令来区分域名:

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

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

    # 其他配置...
}

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

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

    # 其他配置...
}

2. 使用通配符域名

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

    # 配置...
}

3. 正则表达式匹配域名

server {
    listen 80;
    server_name ~^(www\.)?(?<domain>.+)$;

    root /var/www/$domain;

    # 配置...
}

4. 默认服务器配置

server {
    listen 80 default_server;
    server_name _;

    # 默认配置,处理不匹配任何server_name的请求
}

5. HTTPS/SSL配置

对于HTTPS站点,需要为每个域名配置SSL证书:

server {
    listen 443 ssl;
    server_name domain1.com;

    ssl_certificate /path/to/domain1.crt;
    ssl_certificate_key /path/to/domain1.key;

    # 其他SSL配置...
}

server {
    listen 443 ssl;
    server_name domain2.com;

    ssl_certificate /path/to/domain2.crt;
    ssl_certificate_key /path/to/domain2.key;

    # 其他SSL配置...
}

6. 使用include指令组织配置

对于大量域名,可以使用include来组织配置:

/etc/nginx/sites-available/
├── domain1.conf
├── domain2.conf
└── domain3.conf

然后在主配置文件中:

http {
    include /etc/nginx/sites-available/*.conf;
}

最佳实践建议

  1. 为每个域名创建单独的配置文件
  2. 使用sites-availablesites-enabled目录结构管理配置
  3. 配置完成后使用nginx -t测试配置语法
  4. 使用systemctl reload nginx重新加载配置而不中断服务

通过以上方法,Nginx可以高效地区分和处理多个域名的请求。