在Nginx服务器上配置多个域名(虚拟主机)是常见的需求。以下是几种主要方法:
这是最常用的方法,通过不同的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;
# 其他配置...
}
server {
listen 80;
server_name *.example.com;
# 配置...
}
server {
listen 80;
server_name ~^(www\.)?(?<domain>.+)$;
root /var/www/$domain;
# 配置...
}
server {
listen 80 default_server;
server_name _;
# 默认配置,处理不匹配任何server_name的请求
}
对于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配置...
}
对于大量域名,可以使用include来组织配置:
/etc/nginx/sites-available/
├── domain1.conf
├── domain2.conf
└── domain3.conf
然后在主配置文件中:
http {
include /etc/nginx/sites-available/*.conf;
}
sites-available
和sites-enabled
目录结构管理配置nginx -t
测试配置语法systemctl reload nginx
重新加载配置而不中断服务通过以上方法,Nginx可以高效地区分和处理多个域名的请求。