在单台服务器上使用Nginx部署多个网站是一种常见且高效的实践。以下是几种主要方法和最佳实践:
这是最常用的方法,通过不同的域名指向同一IP地址,Nginx根据请求的Host
头来区分不同站点。
# /etc/nginx/conf.d/site1.conf
server {
listen 80;
server_name site1.com www.site1.com;
root /var/www/site1;
index index.html;
# 其他配置...
}
# /etc/nginx/conf.d/site2.conf
server {
listen 80;
server_name site2.com www.site2.com;
root /var/www/site2;
index index.html;
# 其他配置...
}
如果域名不可用,可以使用不同端口区分站点:
server {
listen 8080;
server_name _;
root /var/www/site1;
# 其他配置...
}
server {
listen 8081;
server_name _;
root /var/www/site2;
# 其他配置...
}
server {
listen 80;
server_name ~^(www\.)?(?<subdomain>.+)\.example\.com$;
root /var/www/$subdomain;
# 其他配置...
}
配置文件组织:
/etc/nginx/sites-available/
)/etc/nginx/sites-enabled/
性能优化:
安全性:
资源隔离:
监控与日志:
可以使用工具如Ansible、Chef或Puppet自动化多站点部署过程,或编写简单的shell脚本:
#!/bin/bash
# 自动添加新站点
DOMAIN=$1
mkdir -p /var/www/$DOMAIN
cat > /etc/nginx/sites-available/$DOMAIN.conf <<EOF
server {
listen 80;
server_name $DOMAIN www.$DOMAIN;
root /var/www/$DOMAIN;
index index.html;
}
EOF
ln -s /etc/nginx/sites-available/$DOMAIN.conf /etc/nginx/sites-enabled/
nginx -t && systemctl reload nginx
通过以上方法,您可以高效地在单台服务器上部署和管理多个Nginx站点。