插件窝 干货文章 Nginx怎么批量添加二级子域名

Nginx怎么批量添加二级子域名

Nginx subdomain 配置 通配符 208    来源:    2025-04-26

Nginx批量添加二级子域名指南

在Nginx中批量添加二级子域名可以通过几种方式实现,下面我将介绍最常用的几种方法:

方法一:使用通配符DNS和Nginx通配符配置

  1. 首先配置DNS

    • 在DNS管理中添加一条A记录:*.example.com 指向你的服务器IP
  2. Nginx配置

server {
    listen 80;
    server_name ~^(?<subdomain>.+)\.example\.com$;

    root /var/www/$subdomain;
    index index.html;

    access_log /var/log/nginx/$subdomain.access.log;
    error_log /var/log/nginx/$subdomain.error.log;

    # 其他配置...
}

方法二:使用include指令批量包含配置

  1. 创建子域名配置文件目录:
mkdir /etc/nginx/sites-available/subdomains
  1. 创建模板脚本生成配置文件:
#!/bin/bash
for i in {1..50}; do
    cat > /etc/nginx/sites-available/subdomains/sub${i}.conf <<EOF
server {
    listen 80;
    server_name sub${i}.example.com;

    root /var/www/sub${i};
    index index.html;

    # 其他配置...
}
EOF
done
  1. 在主配置文件中包含这些配置:
include /etc/nginx/sites-available/subdomains/*.conf;

方法三:使用Nginx map指令(适用于有限数量的子域名)

map $host $root_path {
    default /var/www/default;
    "~^(?<subdomain>[^.]+)\.example\.com$" /var/www/$subdomain;
}

server {
    listen 80;
    server_name ~^(?<subdomain>[^.]+)\.example\.com$;

    root $root_path;
    index index.html;

    # 其他配置...
}

自动化脚本示例

#!/bin/bash
# 批量创建50个子域名配置
for i in {1..50}; do
    subdomain="sub${i}"

    # 创建网站目录
    mkdir -p "/var/www/${subdomain}"
    echo "Welcome to ${subdomain}.example.com" > "/var/www/${subdomain}/index.html"

    # 创建Nginx配置
    cat > "/etc/nginx/sites-available/${subdomain}.conf" <<EOF
server {
    listen 80;
    server_name ${subdomain}.example.com;

    root /var/www/${subdomain};
    index index.html;

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

    # 启用配置
    ln -s "/etc/nginx/sites-available/${subdomain}.conf" "/etc/nginx/sites-enabled/"
done

# 测试并重载Nginx
nginx -t && systemctl reload nginx

注意事项

  1. 确保DNS已正确配置通配符记录或批量记录
  2. 根据实际需求调整root路径和日志路径
  3. 对于HTTPS,可以使用通配符SSL证书或Let's Encrypt的DNS验证方式批量获取证书
  4. 大量子域名时考虑性能影响,可能需要调整Nginx的worker_processes和worker_connections

以上方法可以根据你的具体需求选择使用,通配符方法最简单但灵活性较低,批量生成配置文件方法更灵活但管理稍复杂。