15%

Alexhost 满足您的愿望

参与调查 并赢得奖品

31.10.2024
No categories

如何在Ubuntu上配置Nginx的虚拟主机

配置 Nginx 中的虚拟主机允许您在单个服务器上托管多个网站,每个网站都有自己的域名。Nginx 虚拟主机使用“服务器块”进行配置,这些块定义了每个网站的设置。本指南将引导您在 Ubuntu 服务器上使用 Nginx 设置虚拟主机。

1. 先决条件

  • 已安装 Nginx:确保您的服务器上已安装 Nginx。如果没有,请使用以下命令安装:
    sudo apt update
    sudo 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/www

3. 创建示例内容

为了测试虚拟主机,为每个站点添加示例 HTML 文件。

Example1.com:

echo "<h1>Welcome to Example1.com!</h1>" | sudo tee /var/www/example1.com/html/index.html

Example2.com:

echo "<h1>Welcome to Example2.com!</h1>" | sudo tee /var/www/example2.com/html/index.html

4. 创建虚拟主机配置文件

现在,我们将为每个网站创建一个服务器块(虚拟主机)配置文件。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 nginx

8. 访问网站

如果域名指向您的服务器,您现在应该能够通过访问以下地址来访问每个站点:

  • 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 成为在同一服务器上托管多个站点的绝佳选择。

15%

Alexhost 满足您的愿望

参与调查 并赢得奖品

Похожие записи не найдены.