设置 nginx 虚拟主机(服务器块)在 Ubuntu 12.04 LTS上

关于虚拟主机

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

设置

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

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

1sudo apt-get install nginx

步骤一:创建新目录

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

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

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

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

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

步骤二:授予权限

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

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

此外,重要的是要确保每个人都能读取我们新创建的文件。

1sudo chmod 755 /var/www

现在你已经完成了权限设置。

步骤三:创建页面

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

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

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

1<html>
2  <head>
3    <title>www.example.com</title>
4  </head>
5  <body>
6    <h1>成功: 您已设置了一个虚拟主机</h1>
7  </body>
8</html>

保存并退出

步骤四:创建新的虚拟主机文件

下一步是创建一个新文件,其中将包含所有虚拟主机信息。

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

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

步骤五:设置虚拟主机

打开新的虚拟主机文件--您将看到所有需要设置虚拟主机的信息。

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

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

 1server {
 2        listen   80; ## listen for ipv4; this line is default and implied
 3        #listen   [::]:80 default ipv6only=on; ## listen for ipv6
 4
 5        root /var/www/example.com/public_html;
 6        index index.html index.htm;
 7
 8        # Make site accessible from http://localhost/
 9        server_name example.com;
10}
  • 取消注释 "listen 80",以便所有通过该端口进入的流量都将被定向到该站点
  • 将root扩展名更改为与步骤一中创建的目录相匹配。如果文档根目录不正确或缺失,您将无法设置虚拟主机。
  • 将服务器名称更改为您批准的DNS域名,或者如果您没有,可以使用您的IP地址

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

最后一步是通过在sites-available目录和sites-enabled目录之间创建符号链接来激活主机。在Apache中,实现这一点的命令是 "a2ensite"--Nginx没有等效的快捷方式,但它仍然是一个简单的命令。

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

为了避免 "服务器名称冲突错误"并确保进入您的站点时显示正确的信息,您可以删除默认的Nginx服务器块:

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

步骤六:重启Nginx

我们已经对配置进行了很多更改。重启Nginx并使更改生效。

1sudo service nginx restart

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

如果您已将域名指向服务器的IP地址,则可以跳过此步骤--您无需设置本地主机。您的虚拟主机应该可以工作。但是,如果您想在不必连接到实际域名的情况下尝试新的虚拟主机,您可以仅在自己的计算机上设置本地主机。 对于此步骤,请确保您在计算机本身上,而不是在您的Droplet上。

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

如果您使用的是Mac或Linux,请作为root用户(su)登录计算机并打开主机文件:

1nano /etc/hosts

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

您可以将本地主机详细信息添加到此文件中,如下例所示。只要有那一行将浏览器指向(例如)example.com,您就会获得相应IP地址的所有虚拟主机详细信息。

1# Host Database
2#
3# localhost is used to configure the loopback interface
4# when the system is booting.  Do not change this entry.
5##
6127.0.0.1       localhost
7
8#Virtual Hosts 
912.34.56.789    www.example.com

但是,在完成后从本地主机文件夹中删除这些虚构的地址可能是个好主意,以避免将来出现任何混淆。

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

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

它应该看起来与我的方便的截屏图类似。

创建更多虚拟主机

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

查看更多

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

作者:Etel Sverdlov

Published At
Categories with 技术
Tagged with
comments powered by Disqus