Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django 是否需要在nginx.conf中包含启用站点的目录?_Django_Nginx_Uwsgi - Fatal编程技术网

Django 是否需要在nginx.conf中包含启用站点的目录?

Django 是否需要在nginx.conf中包含启用站点的目录?,django,nginx,uwsgi,Django,Nginx,Uwsgi,我正在学习教程。我有一部分被卡住了。我尝试了搜索互联网时发现的所有东西,主要是试图修复我的configmysite\u nginx.conf文件,但现在看来它一直都是正确的 这是我的配置文件mysite\u nginx.conf,当然它是从/usr/local/etc/nginx/sites enabled/符号链接的 # mysite_nginx.conf # the upstream component nginx needs to connect to upstream django {

我正在学习教程。我有一部分被卡住了。我尝试了搜索互联网时发现的所有东西,主要是试图修复我的config
mysite\u nginx.conf
文件,但现在看来它一直都是正确的

这是我的配置文件
mysite\u 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.jpg
localhost:8000/static/img.jpg
总是返回
404未找到
。在nginx日志中,所有请求都映射到
/usr/local/ceral/nginx/version/html/
,这是指向
/usr/local/var/www/
的符号链接,其中存在
index.html
5xx.html
文件

我的
static/
media/
被添加到
/usr/local/ceral/nginx/version/html/
中,因此在nginx错误日志中我看到了对
/usr/local/ceral/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
文件的情况下工作?但这对我不起作用,我是不是遗漏了什么?

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

不同的OS发行版可能会使用不同配置类型的默认配置设置。常见的是使用
include site enabled/*.conf使用
nginx.conf
包括conf enabled/*.conf

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

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

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

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