【问题标题】:Is it necessary to include sites-enabled directory within nginx.conf?是否有必要在 nginx.conf 中包含启用站点的目录?
【发布时间】:2017-09-17 17:19:22
【问题描述】:

我正在关注Setting up Django and your web server with uWSGI and nginx 教程。我被困在Configure nginx for your site 部分。我尝试了所有在互联网上找到的东西,主要是我试图修复我的配置 mysite_nginx.conf 文件,但现在看来它一直都是正确的。

这是我的配置文件 mysite_nginx.conf,当然是从 /usr/local/etc/nginx/sites-enabled/ 符号链接的。

# mysite_nginx.conf

# the upstream component nginx needs to connect to
upstream django {
    server 127.0.0.1:8001;
}

# configuration of the server
server {
    listen                8000;
    server_name           localhost;
    charset               utf-8;
    client_max_body_size  75M;

    location /media  {
        alias /Users/username/dev/my_site/mysite/media;
    }

    location /static {
        alias /Users/username/dev/my_site/mysite/static;
    }

    location / {
        uwsgi_pass  django;
        include     /Users/username/dev/my_site/mysite/uwsgi_params;
    }
}

我遇到的问题

访问localhost:8000/media/img.jpglocalhost:8000/static/img.jpg 总是返回404 Not Found。在 nginx 日志中,所有请求都映射到 /usr/local/Cellar/nginx/version/html/,这是指向 /usr/local/var/www/ 的符号链接,其中存在 index.html5xx.html 文件。

我的static/media/ 被添加到/usr/local/Cellar/nginx/version/html/ 所以在nginx 错误日志中我看到了对/usr/local/Cellar/nginx/version/html/static/img.jpg 的请求。

对我有用的解决方案

nginx.conf 文件中,我包含了启用站点的路径。在此之后,我的所有请求都映射到了我作为位置别名添加的绝对路径,并且一切都按预期工作。

...

http {
    include       mime.types;
    include       /usr/local/etc/nginx/sites-enabled/*.conf;
    default_type  application/octet-stream;

...

问题

在我提到的教程中没有提到这一点,所以我想它应该在不编辑nginx.conf 文件的情况下工作?但它对我不起作用,我错过了什么吗?

【问题讨论】:

    标签: django nginx uwsgi


    【解决方案1】:

    首先,遵循一种方法没有限制或必要性。您可以将所有配置放在一个 nginx.conf 中,也可以将其拆分为多个文件并包含它们,或者您可以包含目录中的特定模式。

    不同的操作系统发行版可能使用不同的配置类型的默认配置设置。常见的是使用nginx.conf 使用include site-enabled/*.conf;include conf-enabled/*.conf;

    逻辑是您在sites-availableconf-available 目录中创建您的实际配置,您只需在sites-enabledconf-enabled 目录中分别对它们进行符号链接。所以明天如果你想禁用配置,而不是重命名或删除它,你只需从xxxx-enabled 目录中删除符号链接。这只是一个约定,因此您可以更轻松地在自己的文件中管理与不同站点相关的虚拟主机。

    默认情况下,这些有一些用于演示 nginx 页面的默认配置。在设置您的配置之前,您应该禁用它,以免它与您的配置混淆。

    现在有时包含可能不是默认nginx.conf 的一部分。因为您使用 brew 安装了 nginx,所以该安装中使用的配置不同。如果你检查它下面包含的文件

    include servers/*;
    

    所以期望是把它放在不同的地方。所以你必须知道基本配置是nginx.conf(也可以通过从源代码编译nginx来改变)。然后它可以包含其他配置,或者选择不包含,而只在nginx.conf 本身中有一个默认服务器。在学习任何教程之前,请先阅读您的 nginx.conf 文件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-01-11
      • 2018-07-07
      • 2022-11-05
      • 1970-01-01
      • 2014-05-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多