如何在Ubuntu上配置Nginx的虚拟主机
配置 Nginx 中的虚拟主机允许您在单个服务器上托管多个网站,每个网站都有自己的域名。Nginx 虚拟主机使用“服务器块”进行配置,这些块定义了每个网站的设置。本指南将引导您在 Ubuntu 服务器上使用 Nginx 设置虚拟主机。
1. 先决条件
- 已安装 Nginx:确保您的服务器上已安装 Nginx。如果没有,请使用以下命令安装:
sudo apt updatesudo apt install nginx - 域名:确保您要托管的域名指向您服务器的 IP 地址。您可以修改 /etc/hosts 文件以进行测试。
2. 为每个网站设置目录
每个网站应有自己的目录来存储网站文件。让我们为两个示例网站 example1.com 和 example2.com 创建目录。
sudo mkdir -p /var/www/example1.com/html sudo mkdir -p /var/www/example2.com/html将这些目录的所有权授予 Nginx 用户(www-data),以确保 Nginx 拥有必要的权限。
sudo chown -R www-data:www-data /var/www/example1.com/html sudo chown -R www-data:www-data /var/www/example2.com/html设置适当的权限:
sudo chmod -R 755 /var/www3. 创建示例内容
为了测试虚拟主机,为每个站点添加示例 HTML 文件。
Example1.com:
echo "<h1>Welcome to Example1.com!</h1>" | sudo tee /var/www/example1.com/html/index.htmlExample2.com:
echo "<h1>Welcome to Example2.com!</h1>" | sudo tee /var/www/example2.com/html/index.html4. 创建虚拟主机配置文件
现在,我们将为每个网站创建一个服务器块(虚拟主机)配置文件。Nginx 将这些配置文件存储在 /etc/nginx/sites-available/ 目录中。
步骤 1:为 Example1.com 创建配置
为 example1.com 创建一个新的配置文件:
sudo nano /etc/nginx/sites-available/example1.com添加以下配置:
server {
listen 80;
server_name example1.com www.example1.com;
root /var/www/example1.com/html;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}步骤 2:为 Example2.com 创建配置
为 example2.com 创建一个配置文件:
sudo nano /etc/nginx/sites-available/example2.com添加以下配置:
server {
listen 80;
server_name example2.com www.example2.com;
root /var/www/example2.com/html;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}5. 启用虚拟主机
Nginx 使用符号链接来启用虚拟主机。将配置文件从 sites-available 链接到 sites-enabled:
sudo ln -s /etc/nginx/sites-available/example1.com /etc/nginx/sites-enabled/ sudo ln -s /etc/nginx/sites-available/example2.com /etc/nginx/sites-enabled/6. 测试配置
为了确保您的配置没有语法错误,请运行:
sudo nginx -t如果一切正确,您将看到确认消息。如果有错误,Nginx 将显示详细信息以帮助您排除故障。
7. 重启 Nginx
确认配置后,重启 Nginx 以应用更改:
sudo systemctl restart nginx8. 访问网站
如果域名指向您的服务器,您现在应该能够通过访问以下地址来访问每个站点:
- http://example1.com
- http://example2.com
对于本地测试,您可以编辑 /etc/hosts 文件,将域名映射到您服务器的 IP 地址。添加如下条目:
127.0.0.1 example1.com 127.0.0.1 example2.com保存并关闭文件,然后尝试在浏览器中访问这些站点。
9. 为每个站点启用 HTTPS(可选)
为了安全连接,您可以使用 Let’s Encrypt 设置 SSL 证书。要启用 HTTPS:
安装 certbot:
sudo apt install certbot python3-certbot-nginx运行以下命令以获取并配置每个域的 SSL 证书:
sudo certbot --nginx -d example1.com -d www.example1.com sudo certbot --nginx -d example2.com -d www.example2.com按照提示操作,Certbot 将自动在您的 Nginx 配置中设置 HTTPS。
结论
通过在 Ubuntu 上的 Nginx 中设置虚拟主机,您可以在单个服务器上托管多个网站,每个网站都有自己的配置和内容。这种设置高效且可扩展,使 Nginx 成为在同一服务器上托管多个站点的绝佳选择。
