如何在Ubuntu12.04LTS上设置nginx虚拟主机(服务器块)

来自菜鸟教程
跳转至:导航、​搜索


状态: 已弃用

本文介绍了不再受支持的 Ubuntu 版本。 如果您当前正在运行运行 Ubuntu 12.04 的服务器,我们强烈建议您升级或迁移到受支持的 Ubuntu 版本:

原因: Ubuntu 12.04 已于 2017 年 4 月 28 日终止生命周期 (EOL) and no longer receives security patches or updates. This guide is no longer maintained.

请参阅:
本指南可能仍可用作参考,但可能不适用于其他 Ubuntu 版本。 如果可用,我们强烈建议使用为您正在使用的 Ubuntu 版本编写的指南。 您可以使用页面顶部的搜索功能来查找更新的版本。


关于虚拟主机

虚拟主机用于在一台服务器上运行多个网站或域。 注意:根据 nginx 网站,虚拟主机在 nginx 上称为服务器块。 但是,为了便于与 apache 进行比较,我将在本教程中将它们称为虚拟主机。

设置

本教程中的步骤要求用户在虚拟专用服务器上具有 root 权限。 您可以在 初始服务器设置教程 的第 3 步和第 4 步中查看如何设置它。 此外,如果我在一个步骤中引用用户,我将使用名称 www。 您可以实现任何适合您的用户名。

此外,您需要在您的 VPS 上已经安装了 nginx。 如果不是这种情况,您可以使用以下命令下载它:

sudo apt-get install nginx

第一步——创建一个新目录

创建虚拟主机的第一步是创建一个目录,我们将在其中保存新网站的信息。

稍后,此位置将成为您在 nginx 虚拟配置文件中的文档根目录。 通过在代码行中添加 -p,该命令会自动为新目录生成所有父目录。

sudo mkdir -p /var/www/example.com/public_html

您需要指定一个实际的 DNS 批准域 或 IP 地址,以测试虚拟主机是否正常工作。 在本教程中,我们将使用 example.com 作为正确域名的占位符。

但是,如果您想使用未经批准的域名来测试该过程,您将在第六步中找到有关如何使其在本地计算机上运行的信息。

第二步——授予权限

我们需要将目录的所有权授予正确的用户,而不是仅仅将其保留在根系统上。 您可以用适当的用户名替换下面的“www-data”。

sudo chown -R www-data:www-data /var/www/example.com/public_html

此外,确保每个人都能阅读我们的新文件也很重要。

sudo chmod 755 /var/www

现在你已经完成了权限。

第三步——创建页面

我们需要在之前创建的目录中创建一个名为 index.html 的新文件。

sudo nano /var/www/example.com/public_html/index.html

我们可以在文件中添加一些文本,以便在站点重定向到虚拟主机时查看一些内容。

&lthtml&gt
  &lthead&gt
    &lttitle>www.example.com&lt/title&gt
  &lt/head&gt
  &ltbody&gt
    &lth1>Success: You Have Set Up a Virtual Host&lt/h1&gt
  &lt/body&gt
&lt/html&gt

保存并退出

第四步——创建新的虚拟主机文件

下一步是创建一个包含我们所有虚拟主机信息的新文件。

nginx 在 sites-available 目录(/etc/nginx/sites-available)中为我们提供了这个文件的布局,我们只需将文本复制到一个新的自定义文件中:

sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/example.com

第五步——设置虚拟主机

打开新的虚拟主机文件——您将看到在其中设置虚拟主机所需的所有信息。

 sudo nano /etc/nginx/sites-available/example.com

我们需要在这几行中进行一些更改:

 server {
        listen   80; ## listen for ipv4; this line is default and implied
        #listen   [::]:80 default ipv6only=on; ## listen for ipv6

        root /var/www/example.com/public_html;
        index index.html index.htm;

        # Make site accessible from http://localhost/
        server_name example.com;
}
  • 取消注释“listen 80”,以便通过该端口进入的所有流量都将定向到该站点
  • 更改根扩展名以匹配我们在第一步中创建的目录。 如果文档根目录不正确或不存在,您将无法设置虚拟主机。
  • 将服务器名称更改为您的 DNS 批准的域名,或者,如果您没有,您可以使用您的 IP 地址

您无需对此文件进行任何其他更改。 保存并退出。

最后一步是通过在站点可用目录和站点启用目录之间创建符号链接来激活主机。 在 apache 中,完成此操作的命令是“a2ensite”——nginx 没有等效的快捷方式,但它仍然是一个简单的命令。

sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/example.com

为了避免“冲突服务器名称错误”并确保访问您的站点显示正确的信息,您可以删除默认的 nginx 服务器块:

sudo rm /etc/nginx/sites-enabled/default

第六步——重启nginx

我们对配置进行了很多更改。 重新启动 nginx 并使更改可见。

sudo service nginx restart

可选步骤七——设置本地主机

如果您已将您的域名指向您的服务器的 IP 地址,您可以跳过这一步——您不需要设置本地主机。 您的虚拟主机应该可以工作。 但是,如果想在无需连接到实际域名的情况下试用新的虚拟主机,您可以单独在计算机上设置本地主机。 对于此步骤,请确保您使用的是计算机本身,而不是您的 droplet。

要继续此步骤,您需要知道计算机的管理密码,否则您将需要使用实际域名来测试虚拟主机。

如果您使用的是 Mac 或 Linux,请访问计算机上的 root 用户 (su) 并打开您的 hosts 文件:

nano /etc/hosts 

如果您使用的是 Windows 计算机,您可以在 Microsoft 网站 上找到更改主机文件的说明

您可以将本地主机详细信息添加到此文件中,如下例所示。 只要该行存在,将您的浏览器指向 example.com 就会为您提供相应 IP 地址的所有虚拟主机详细信息。

# Host Database
#
# localhost is used to configure the loopback interface
# when the system is booting.  Do not change this entry.
##
127.0.0.1       localhost

#Virtual Hosts 
12.34.56.789    www.example.com 

但是,最好在完成后将这些编造的地址从本地主机文件夹中删除,以避免将来出现任何混淆。

第八步——结果:查看您的虚拟主机的运行情况

完成虚拟主机设置后,您可以在线查看它的外观。 在浏览器中输入您的域名或 IP 地址(即。 http://12.34.56.789)

它应该看起来有点类似于我的方便截图

创建更多虚拟主机

要添加更多虚拟主机,您只需重复上述过程,注意使用适当的域名设置新的文档根目录,然后创建并激活新的虚拟主机文件。

看更多

设置好虚拟主机后,您可以继续 为您的站点创建 SSL 证书安装 FTP 服务器

埃特尔·斯维尔德洛夫