在 Debian 上设置泛域名(Wildcard Domain),通常指的是让一个域名(如 *.example.com)解析到服务器,并在 Web 服务中生效。下面按常见场景给你完整说明。
泛域名指的是:
*.example.com
可以匹配:
a.example.com
b.example.com
test.example.com
需要 DNS + Web 服务 两部分配合。
以 example.com 为例:
| 类型 | 主机名 | 值(服务器 IP) |
|---|---|---|
| A | * |
1.2.3.4 |
| A | @ |
1.2.3.4 |
✅ 这样:
example.com
*.example.com
都会解析到你的 Debian 服务器。
ping test.example.com
或
nslookup test.example.com
sudo apt update
sudo apt install nginx
编辑配置文件:
sudo nano /etc/nginx/sites-available/wildcard
内容示例:
server {
listen 80;
server_name *.example.com;
root /var/www/wildcard;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}
sudo ln -s /etc/nginx/sites-available/wildcard /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx
sudo mkdir -p /var/www/wildcard
echo "Wildcard OK" | sudo tee /var/www/wildcard/index.html
访问:
http://test.example.com
sudo a2enmod vhost_alias
<VirtualHost *:80>
ServerAlias *.example.com
DocumentRoot /var/www/wildcard
<Directory /var/www/wildcard>
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
sudo apt install certbot python3-certbot-nginx
sudo certbot certonly --manual --preferred-challenges dns -d example.com -d *.example.com
⚠️ 需要你在 DNS 中添加 TXT 记录 验证域名所有权。
server {
listen 443 ssl;
server_name *.example.com;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
root /var/www/wildcard;
index index.html;
}
如果你希望:
user1.example.com → /var/www/user1
user2.example.com → /var/www/user2
可用 Nginx 动态目录:
server {
listen 80;
server_name ~^(?<subdomain>.+)\.example\.com$;
root /var/www/$subdomain;
index index.html;
}
✅ 检查:
nslookup)*:80可修改 /etc/hosts(仅本机):
127.0.0.1 test.example.com
✅ Debian 设置泛域名核心步骤:
*.example.comserver_name *.example.com如果你愿意,可以告诉我:
我可以给你一份完全针对你环境的配置。