我正在关注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.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/
,因此在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
文件的情况下工作?但它对我没有用,我错过了什么吗?
答案 0 :(得分:1)
首先,没有限制或必须遵循一种方法。您可以将所有配置放在一个nginx.conf
中,也可以将其拆分为多个文件并包含它们,或者您可以在目录中包含特定模式。
不同的OS分发可能使用不同的配置类型的默认配置设置。常见的一种是nginx.conf
使用include site-enabled/*.conf;
和include conf-enabled/*.conf;
逻辑是您在sites-available
和conf-available
目录中创建实际配置,然后分别在sites-enabled
和conf-enabled
目录中对它们进行符号链接。所以明天如果要禁用配置,而不是重命名或删除它,只需从xxxx-enabled
目录中删除符号链接即可。这只是一个约定,因此您可以更轻松地管理与自己文件中不同站点相关的虚拟主机。
默认情况下,这些默认配置适用于demo nginx页面。在设置配置之前,你应该禁用它,这样它就不会搞砸你的配置。
现在,有时包含可能不是默认nginx.conf
的一部分。因为您使用brew安装了nginx,所以该安装中使用的配置是不同的。如果您检查下面包含的文件
include servers/*;
所以期望将它放在不同的地方。所以你必须要知道基本配置是nginx.conf
(也可以通过从源代码编译nginx来改变)。然后它可以包含其他配置或选择不在nginx.conf
本身中只有一个默认服务器。在学习任何教程之前,请先阅读nginx.conf
文件。