在 Ubuntu 上,默认情况下,Nginx Web 服务器将其文档存储在/var/www/html
,它通常与操作系统的其余部分一起位于根文件系统上。但有时,将文档根移动到另一个位置会很有帮助,例如单独安装的文件系统。例如,如果您从同一个 Nginx 实例提供多个网站服务,则将每个网站的文档根目录放在自己的卷上,这样您就可以根据特定网站或客户端的需求进行扩展。
在本指南中,我们将向您展示如何将 Nginx 文档根移动到新位置。
要完成本指南,您将需要:
-
具有非 root 用户的 Ubuntu 16.04 服务器sudo
特权。您可以在我们的文章中详细了解如何设置具有这些权限的用户使用 Ubuntu 16.04 进行初始服务器设置 guide.
-
Nginx Web 服务器:如果您还没有设置,请参阅深入文章,如何在 Ubuntu 16.04 上安装 Nginx,可以指导您。
-
文档根目录的新位置:新文档根位置完全可以根据您的需要进行配置。如果要将文档根目录移动到其他存储设备,您将需要选择设备安装点下的位置。在此示例中,我们将使用/mnt/volume-nyc1-01
目录。如果您在 DigitalOcean 上使用块存储,本指南在继续本教程之前,将向您展示如何安装驱动器。
在全新安装的 Nginx 上,文档根目录位于/var/www/html
。但是,如果您正在使用现有服务器,则可能会有显着不同的设置,包括相应服务器块指令中的多个文档根。
您可以使用以下命令搜索其他文档根目录的位置grep
。我们将在/etc/nginx/sites-enabled
目录以将我们的注意力限制在活动站点上。这-R
标志确保grep
将打印这两个行root
指令及其输出中的文件名:
-
grep "root" -R/etc/nginx/sites-enabled
结果将类似于下面的输出,尽管现有安装上的结果名称和数量可能有所不同:
Output
/etc/nginx/sites-enabled/default: root /var/www/html;
/etc/nginx/sites-enabled/default: # deny access to .htaccess files, if Apache's document root
/etc/nginx/sites-enabled/default:# root /var/www/example.com;
使用来自的反馈grep
以确保您正在复制所需的文件并更新适当的配置文件。
现在我们已经确认了文档根目录的位置,我们将使用以下命令将文件复制到新位置rsync
。使用-a
标志保留权限和其他目录属性,而-v
提供详细输出,以便您可以跟踪进度。
Note:确保目录上没有尾部斜杠,如果使用制表符补全,则可能会添加尾部斜杠。当尾部有斜杠时,rsync
会将目录的内容转储到安装点,而不是将其传输到包含的目录中html
目录:
-
sudo rsync -av /var/www/html /mnt/volume-nyc1-01
现在我们准备好更新配置了。
Nginx 使用全局配置文件和站点特定配置文件。有关配置文件层次结构的背景信息,请查看如何在虚拟专用服务器上配置 Nginx Web 服务器.
如果您正在使用现有安装,则应该使用以下命令修改之前找到的文件grep
命令。在我们的示例中,我们将查看名为的默认配置文件default
.
在编辑器中打开文件:
-
sudo nano/etc/nginx/sites-enabled/default
然后,找到以以下内容开头的行root
并使用新位置更新它。
Note:您应该查找原始路径显示的其他位置,并将它们也更改为新位置。除了根之外,您可能还会发现别名和重写等内容也需要更新。
/etc/nginx/sites-enabled/default
. . .
# include snippets/snakeoil.conf;
root /mnt/volume-nyc1-01/html;
# Add index.php to the list if you are using PHP
index index.html index.htm index.nginx-debian.html;
server_name _;
. . .
完成所有必要的更改后,保存并关闭文件。
完成配置更改后,您可以使用此命令确保语法正确:
如果一切正常,它应该返回:
Output
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
如果测试失败,请跟踪并解决问题。
测试通过后,重启Nginx:
服务器重新启动后,访问受影响的站点并确保它们按预期工作。一旦您觉得一切都井然有序,请不要忘记删除数据的原始副本。
在本教程中,我们介绍了如何将 Nginx 文档根目录更改为新位置。这可以帮助您进行基本的 Web 服务器管理,例如有效管理单个服务器上的多个站点。它还允许您利用替代存储设备,例如网络块存储,这是根据需求变化扩展网站的重要一步。
如果您正在管理一个繁忙或不断发展的网站,您可能有兴趣学习如何使用 HTTP/2 设置 Nginx利用其高内容传输速度。您还可以在这个比较中了解更多有关提高生产体验的信息改进生产 Web 应用程序服务器设置的五种方法.