代码之家  ›  专栏  ›  技术社区  ›  rand0rn

是否需要在nginx中包含支持站点的目录。形态?

  •  2
  • rand0rn  · 技术社区  · 7 年前

    我正在关注 Setting up Django and your web server with uWSGI and nginx 辅导的我有一部分被卡住了 Configure nginx for your site mysite_nginx.conf 文件,但现在似乎它一直都是正确的。

    mysite\u nginx。形态 /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.jpg localhost:8000/static/img.jpg 总是回来 404 Not Found . 在nginx日志中,所有请求都映射到 /usr/local/Cellar/nginx/version/html/ 这是指向 /usr/local/var/www/ 哪里 index.html 5xx.html 文件存在。

    static/ media/ 已添加到 /usr/local/Cellar/nginx/version/html/ /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。形态

    1 回复  |  直到 7 年前
        1
  •  2
  •   Tarun Lalwani    7 年前

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

    nginx。形态 使用 include site-enabled/*.conf; include conf-enabled/*.conf;

    逻辑是您在中创建实际配置 sites-available conf-available sites-enabled conf-enabled xxxx-enabled

    默认情况下,它们有一些默认配置,用于演示nginx页面。在设置配置之前,你应该禁用它,这样它就不会干扰你的配置。

    现在,有时包含可能不是默认的一部分 nginx。形态 . 由于您使用brew安装了nginx,因此该安装中使用的配置不同。如果您检查了以下文件,请包括

    include servers/*;
    

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