我们都知道如何在 Linux 上使用 apache 启用网站。我很确定我们都同意使用 a2ensite 命令。
不幸的是,Nginx 没有默认的等效命令,但我确实在 ubuntu 上安装了一些允许我启用/禁用站点并列出它们的软件包。
问题是我不记得这个包的名字了。
有人知道我在说什么吗?
请告诉我这个包的名称和命令名称。
我们都知道如何在 Linux 上使用 apache 启用网站。我很确定我们都同意使用 a2ensite 命令。
不幸的是,Nginx 没有默认的等效命令,但我确实在 ubuntu 上安装了一些允许我启用/禁用站点并列出它们的软件包。
问题是我不记得这个包的名字了。
有人知道我在说什么吗?
请告诉我这个包的名称和命令名称。
如果您已经
nginx
从 Ubuntu 存储库安装了软件包,您将有两个目录。/etc/nginx/sites-enabled
和/etc/nginx/sites-available
。在主要的 nginx 配置中
/etc/nginx/nginx.conf
,您有以下行:所以基本上要列出所有可用的虚拟主机,您可以运行以下命令:
要激活其中之一,请运行以下命令:
Apache 附带的脚本基本上只是简单的 shell 包装器,其功能与上述类似。
链接文件后,记得运行
sudo service nginx reload
/service nginx reload
只需创建此脚本
/usr/bin/nginx_modsite
并使其可执行即可。这个怎么运作:
列出所有站点
启用站点“test_website”
禁用站点“test_website”
nginx_ensite
有第三方nginx_dissite
可用。可以尽快安装
(不过请参阅回购协议)
用法示例:(
nginx_ensite example.org
更多信息请参见联机手册页)。NGINX
如果您使用的是来自http://nginx.org/packages/的官方上游 nginx 包之一,最好的方法是导航到该目录,并将受影响的文件从具有后缀重命名为具有不同的后缀禁用站点:
/etc/nginx/conf.d
.conf
sudo mv -i /etc/nginx/conf.d/default.conf{,.off}
或者相反启用它:
sudo mv -i /etc/nginx/conf.d/example.com.conf{.disabled,}
这是因为默认
/etc/nginx/nginx.conf
具有以下include
指令:Debian/Ubuntu
但是,如果您使用的是 Debian/Ubuntu 衍生产品,那么除了
conf.d
,您还可能拥有邪恶的非标准sites-available
目录和sites-enabled
目录,一些文件可能会在不考虑其扩展名的情况下随意包含:因此,在 Debian/Ubuntu 中,您可能首先必须弄清楚站点配置所在的位置。
您可以使用以下命令通过运行以查找与给定掩码匹配的所有常规文件来获取所有可用站点的列表:
find(1)
find /etc/nginx -maxdepth 2 -type f \( -path "*/conf.d/*.conf" -or -path "*/sites-*/*" \)
您可以使用以下命令获取所有已启用站点的列表:
find /etc/nginx -maxdepth 2 \( -path "*/conf.d/*.conf" -or -path "*/sites-enabled/*" \)
然后在 Debian/Ubuntu 上禁用/启用站点:
禁用站点:如果配置在 中
conf.d
,只需将文件重命名为不再有.conf
后缀即可;或者,如果在 中sites-enabled
,则将其移出sites-enabled
。要启用站点,最好的方法是将其移动到
/etc/nginx/conf.d
,并重命名为具有.conf
后缀。PS 为什么我认为 Debian
include /etc/nginx/sites-enabled/*;
是邪恶的?尝试编辑该目录中的几个文件,并让您emacs
创建备份文件(带有~
后缀),然后再次询问我。链接完整路径:
紧凑的 ngensite/ngdisite shell 脚本
在设置新的 Debian 服务器时阅读此处的回复,然后开始做一些研究后,我制作了几个可读的 shell 脚本来帮助我在至少具有一定安全性的服务器上启用/禁用站点(root 禁用,非 -默认端口等)。一旦文件可执行,任何具有 root 访问权限的人都可以从默认情况下在 Debian PATH 中的任何地方
chmod +x
调用这些脚本。/usr/local/bin/
这些工作(我多年来使用的方式)通过创建和删除别名来实现,
sites_enabled
所以不要触及sites_available
.启用网站
在
/usr/local/bin/ngensite
::然后从命令行:
sudo ngensite
(提示将需要确切的nginx 虚拟主机配置文件)。
禁用网站
在
/usr/local/bin/ngdissite
::然后从命令行:
sudo ngdissite
(提示需要nginx 虚拟主机配置文件的确切名称)。
如果您在其中发现任何问题(它们非常简单但对我来说很重要)请发表评论。
另一种方法是将站点的配置文件重命名为不带 .conf 结尾的内容
例如
sudo mv mysite.conf mysite.conf.disabled
然后重新加载 nginx,虚拟主机将回退到默认值。
我知道这在技术上不正确,但我只是
mv
在sites-available
.sites-enabled
它工作正常,不要过着复杂的生活。启用:
禁用:
我想提交我用 Bash 编写的脚本以适应此功能。它被称为
nginxsite
→ https://github.com/L1so/nginxsite/。有关更多信息,请查看 github 链接。启用
要激活站点,请替换
(YOUR SITE)
为您的实际站点域(位于/etc/nginx/sites-available/
)。停用
要停用站点,请替换
(YOUR SITE)
为您的实际站点域(位于 中/etc/nginx/sites-available/
)。创建服务器块
要创建站点,请替换
(YOUR DOMAIN)
为您的实际域。不带任何参数运行
ngxcreate
将提示您输入所需的站点名称,如果您不包括 tld,脚本将为您提供.com
域。将保存一个名为
/etc/nginx/sites-available/examplesite.com
删除服务器块
要删除站点,请替换
(YOUR DOMAIN)
为您的实际站点域。下面给出的例子。