晚上好,
我目前正面临家庭项目的问题。
我用gunicorn和nginx建立了一个django项目。
Nginx似乎正常服务于我的静态,但是当涉及到媒体文件时,它不起作用,我的错误日志中显示以下消息:failed (2: No such file or directory)
我尝试为nginx.conf使用不同的用户,但它仍然是相同的。
我在某个地方遗漏了一些东西,但我找不到。
我附上了我的nginx文件(已更新):
upstream app_server {
server unix:/home/project/saleor.sock fail_timeout=0;
}
server {
listen 80;
server_name my_server_ip;
access_log /home/project/logs/nginx-access.log;
error_log /home/project/logs/nginx-error.log;
location /media {
root /home/user/project/test/media/;
expires 1d;
}
location /static {
root /home/user/project/test/static/;
expires 1d;
autoindex on;
}
location / {
try_files $uri @proxy_to_app;
}
location @proxy_to_app {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_pass http://app_server;
}
}
更新 我删除了以下部分:
location ~ ^/(images|javascript|js|css|flash|media|static)/ {
root /home/user/project/test;
expires 30d;
}
并补充说:
location /media {
root /home/user/project/test/media/;
expires 1d;
autoindex on;
}
location /static {
root /home/user/project/test/static/;
expires 1d;
autoindex on;
}
以下是我的settings.py:
的示例ALLOWED_HOST = my_server_ip
PROJECT_ROOT = os.path.normpath(os.path.join(os.path.dirname(__file__), '..'))
MEDIA_ROOT = os.path.join(PROJECT_ROOT, 'media')
MEDIA_URL = '/media/'
更新
以下是我的nginx错误日志示例:
[错误] 11475#11475:* 1 open()“/ home / users / project / test / media / media /sized/products/picture.JPG”失败(2:没有这样的文件或目录),客户端:some_client_ip,server:my_server_ip,request:“GET /media/sized/products/picture.JPG HTTP / 1.1”,host:“my_website_ip”,referrer:“{{ 3}}“
你知道它可能来自哪里吗? (我很确定这是愚蠢的事情= /)
答案 0 :(得分:1)
您忘了在Nginx配置文件中指定媒体部分,您也应该对静态文件执行相同操作
server {
....
# There is for media, Put your path here :)
location /media {
autoindex on;
alias /home/myusername/myproject/media/;
}
....
}