Django 是否需要在nginx.conf中包含启用站点的目录?
我正在学习教程。我有一部分被卡住了。我尝试了搜索互联网时发现的所有东西,主要是试图修复我的configDjango 是否需要在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 {
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
文件