Nginx 支持在同一台服务器上托管多个网站,即所谓的“虚拟主机”配置。这允许你在一台物理服务器上运行多个完全独立的网站,每个网站有自己的域名、文档根目录、SSL证书等。以下是配置 Nginx 虚拟主机的详细步骤:
步骤 1: 创建网站目录
首先,为每个虚拟主机创建各自的文档根目录。例如,如果你有example.com和site.org两个网站,可以在服务器上创建如下目录:
mkdir -p /var/www/example.com/public_html
mkdir -p /var/www/site.org/public_html
chown www-data:www-data /var/www/*/*.public_html
步骤 2: 编辑 Nginx 配置文件
在 Nginx 的配置文件中(通常位于 /etc/nginx/sites-available),为每个虚拟主机添加一个新的server块。下面是一个示例配置:
server {
listen 80; # 监听 HTTP 请求
server_name example.com www.example.com; # 主域名及其别名
root /var/www/example.com/public_html; # 文档根目录
index index.html index.htm index.php; # 首页文件列表
location / {
try_files $uri $uri/ =404; # 尝试直接读取请求的文件或目录,否则返回404
}
# SSL配置(如果启用HTTPS)
listen [::]:443 ssl ipv6only=on; # 监听 HTTPS 请求
ssl_certificate /path/to/cert.pem; # SSL证书路径
ssl_certificate_key /path/to/key.pem; # 私钥路径
include snippets/ssl-params.conf; # 包含通用SSL参数
}
server {
listen 80;
server_name site.org www.site.org;
root /var/www/site.org/public_html;
index index.html index.htm index.php;
location / {
try_files $uri $uri/ =404;
}
}
注意,每个server块都必须包含listen和server_name指令,分别指定监听的端口和域名。
步骤 3: 链接到sites-enabled目录
为了让 Nginx 认识新添加的虚拟主机配置,你需要在/etc/nginx/sites-enabled目录下创建一个软链接:
ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
ln -s /etc/nginx/sites-available/site.org /etc/nginx/sites-enabled/
步骤 4: 测试配置并重启 Nginx
在更改完配置之后,务必进行语法检查以确认没有错误:
nginx -t
如果一切看起来都没问题,就可以重启 Nginx 来使新的配置生效:
sudo systemctl restart nginx # Ubuntu/Debian
# 或者
sudo service nginx restart # CentOS/RHEL/Fedora
步骤 5: 测试虚拟主机
最后,使用不同的域名测试你的虚拟主机是否正确配置:
- 打开浏览器,访问
http://example.com和http://site.org,确认显示的内容是各自对应网站的主页。 - 如果启用了 HTTPS,也要确保 SSL 证书正确工作,访问
https://example.com和https://site.org并查看是否出现警告。
通过上述步骤,你现在应该已经成功配置了自己的 Nginx 虚拟主机,能够在同一台服务器上运行多个独立的网站了。随着实践的积累,你还可以继续探索更多高级配置,如反向代理、负载均衡等功能,以满足更复杂的应用场景。