【问题标题】:nginx missing sites-available directorynginx缺少站点可用目录
【发布时间】:2013-06-29 02:36:30
【问题描述】:

我在 Centos 6 上安装了 Nginx,我正在尝试设置虚拟主机。我遇到的问题是我似乎找不到/etc/nginx/sites-available 目录。

我需要做些什么来创建它吗?我知道 Nginx 已经启动并运行,因为我可以浏览到它。

【问题讨论】:

标签: nginx centos virtualhost


【解决方案1】:

嗯,我认为 Nginx 本身在其设置中没有此功能,因为 Ubuntu 维护的软件包将其作为模仿 Debian 的 apache 设置的惯例。如果您想模拟相同的设置,您可以自己创建它。

创建/etc/nginx/sites-available/etc/nginx/sites-enabled,然后编辑/etc/nginx/nginx.conf 内的http 块并添加这一行

include /etc/nginx/sites-enabled/*;

当然,所有文件都将在sites-available 中,您可以在sites-enabled 中为您想要启用的文件创建符号链接。

【讨论】:

  • RedHat 亲戚(即 Fedora 和 Centos)没有像 Debian/Ubuntu 那样开箱即用的功能。正如@Mohammad 所说,它很容易复制,但是没有好的默认值会让新手感到困惑。
  • 天哪,我不能说我做了多少次搜索才能弄清楚这一点。我正在使用 Amazon Linux AMI 版本 2014.03。如果您从 rpm 文件(无论是 nginx 1.6.2 还是 nginx 1.7.5)安装 nginx,这些目录不会自动创建,但是许多 nginx 配置示例都引用了这些……让您怀疑您的 nginx 是否安装正确。跨度>
  • 非常感谢,符号链接怎么样?我的语法正确吗? include 语句似乎没有找到它。
  • 我修复了它,重新开始并创建了这样的符号链接:sudo ln -s /etc/nginx/sites-available/test.conf /etc/nginx/sites-enabled/test.conf 不确定为什么完整路径会有所作为:/
  • 非常感谢。从源代码构建 nginx 并没有意识到 ubuntu 是这样做的。
【解决方案2】:

如果您更喜欢更直接的方法,即不会混淆/etc/nginx/sites-available/etc/nginx/sites-enabled 之间的符号链接,请执行以下操作:

  1. 找到您的 nginx.conf 文件。可能在/etc/nginx/nginx.conf
  2. 找到 http 块。
  3. 在 http 块的某处,写 include /etc/nginx/conf.d/*.conf; 这告诉 nginx 拉入 conf.d 目录中以 .conf 结尾的所有文件。 (我知道:目录中可以包含 . 很奇怪。)
  4. 如果conf.d 目录不存在,则创建它(根据步骤 3 中的路径)。一定要给它正确的权限/所有权。可能是根或 www 数据。
  5. 将单独的配置文件(就像在 /etc/nginx/sites-available 中一样)移动或复制到目录 conf.d 中。
  6. 重新加载或重启 nginx。
  7. 吃一个冰淇淋蛋筒。

从这里开始,您放入conf.d 目录的任何.conf 文件都将变为活动状态,只要您之后重新加载/重新启动 nginx。

注意:如果您愿意,可以同时使用conf.dsites-enabled + sites-available 方法。我喜欢使用conf.d 在我的开发盒上进行测试。感觉比符号链接和非符号链接更快。

【讨论】:

  • 符号链接“混乱”的关键在于您可以保留配置文件并仍然非常轻松地禁用虚拟主机。如果你使用你的方法,当你想禁用一个我不认为比方便地删除符号链接更麻烦的网站时,你必须将文件移出 conf.d。
  • @bviktor 我听到了。我实际上使用两种方式。我只是发现 [在测试配置时] 在可用站点和启用站点的目录之间来回切换更加乏味。在我的生产环境中,我计划使用符号链接。
  • 是的,我同意,在快速测试东西时输入 ln -s ../sites-available/... 相当乏味,但从长远来看,它更方便且更易于管理:)
  • @bvktor 仅包含扩展名为 .conf 的站点。如果您不想启用站点,只需将 .disabled 扩展名添加到站点配置文件即可。这是 CentOS / Apache 中的标准约定,它也适用于 Nginx。
  • 有点惊讶没有人建议 include /etc/ngins/conf.d/*.enabled 或类似的东西,禁用虚拟主机只需将 .enabled 重命名为远离名称
【解决方案3】:

我试过 sudo apt install nginx-full。 您将获得所有必需的软件包。

【讨论】:

  • CentOS 使用 YUM 包。
猜你喜欢
  • 2021-08-07
  • 1970-01-01
  • 2015-05-21
  • 2018-02-24
  • 1970-01-01
  • 2023-03-23
  • 2014-09-09
  • 1970-01-01
  • 2017-04-25
相关资源
最近更新 更多