摘要:Nginx可以轻松地配置以监听多个域名,并为每个域名提供不同的配置。这通常通过配置多个`server`块来实现。以下是如何让Nginx监听多个域名的示例和说明。--- 示例配置文件假设有以下两个域名:- `example.com`- `example.org`可以在Nginx...
Nginx可以轻松地配置以多个域名,并为每个域名提供不同的配置。这通常通过配置多个`server`块来实现。以下是如何让Nginx多个域名的示例和说明。
---
示例配置文件
假设有以下两个域名:
- `example.com`
- `example.org`
可以在Nginx配置文件中(通常是`/etc/nginx/nginx.conf`或`/etc/nginx/sites-available/default`)设置多个 `server` 块,如下所示:
```nginx
# 第一组配置:处理 example.com
server {
listen 80;
server_name example.com www.example.com;
root /var/www/example.com;
index index.html index.htm;
location / {
try_files $uri $uri/ =404;
}
}
# 第二组配置:处理 example.org
server {
listen 80;
server_name example.org www.example.org;
root /var/www/example.org;
index index.html index.htm;
location / {
try_files $uri $uri/ =404;
}
}
```
配置说明
1. 端口
- `listen 80` 表示 HTTP 的 80 端口。
- 如果有 HTTPS (SSL/TLS),替换为 `listen 443 ssl;` 并配置证书。
2. server_name
- `server_name` 定义了与哪个域名匹配(如 `example.com` 和 `www.example.com`)。
- 如果你想所有域名,可以写成 `_` 或直接用 `server_name _;`。
3. 根目录
- `root /var/www/example.com;` 是站点的根目录,每个域名可以有不同的根目录。
4. location
- `location /` 表示处理请求的路径规则,这里尝试将请求映射到文件或者返回 404。
---
通配符与泛域名配置
如果你有相似的多个域名,可以使用通配符配置:
```nginx
server {
listen 80;
server_name *.example.com;
root /var/www/example.com;
index index.html index.htm;
location / {
try_files $uri $uri/ =404;
}
}
```
这将匹配所有子域名,例如 `sub1.example.com` 和 `sub2.example.com`。
---
验证配置并重启 Nginx
1. 检查配置是否正确:
```bash
sudo nginx -t
```
2. 重新加载 Nginx:
```bash
sudo systemctl reload nginx
```
---
使用 HTTPS 配置多个域名
如果为每个域名使用 HTTPS,需要提供证书。例如:
```nginx
server {
listen 443 ssl;
server_name example.com;
ssl_certificate /etc/nginx/ssl/example.com.crt;
ssl_certificate_key /etc/nginx/ssl/example.com.key;
root /var/www/example.com;
index index.html index.htm;
location / {
try_files $uri $uri/ =404;
}
}
```
重复上述配置为其他域名配置证书,或者使用通配符/多域名证书。
---
这样就能让 Nginx 多个域名并实现不同的响应了。