我整晚都在寻找和尝试,但没有成功。
我配置了 nginx 来提供我的静态文件并代理所有其他流量:
server {
listen 80;
server_name example.com;
access_log /home/boudewijn/www/bbt/brouwers/logs/access.log;
error_log /home/boudewijn/www/bbt/brouwers/logs/error.log;
location / {
proxy_pass http://127.0.0.1:8080;
include /etc/nginx/proxy.conf;
}
location /media/ {
root /home/boudewijn/www/bbt/brouwers/;
}
}
代理传递没有问题,但是当我转到 example.com/media/ 或尝试访问那里的任何测试文件时,却没有成功。我注意到了 root 和 alias 之间的区别,我的媒体文件夹存在,我注意到了尾部的斜杠,但是当我尝试访问我的静态媒体文件时仍然出现 404。
有什么帮助吗?
答案1
我假设您的媒体文件位于 /home/boudewijn/www/bbt/brouwers/media。在这种情况下,以下内容应该工作。
如果仍然收到 404 错误,请检查错误日志,因为它应该显示它尝试访问的确切文件路径。
server {
listen 80;
server_name mydomain.com;
access_log /home/boudewijn/www/bbt/brouwers/logs/access.log;
error_log /home/boudewijn/www/bbt/brouwers/logs/error.log warn;
root /home/boudewijn/www/bbt/brouwers/;
try_files $uri @proxy;
location @proxy {
proxy_pass http://127.0.0.1:8080;
include /etc/nginx/proxy.conf;
}
}
答案2
这是一个工作正常的 nginx 前端、Apache2 后端、Django 的 nginx 站点配置的示例:
server {
listen 80 default;
server_name www.example.com example.com;
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://localhost:8001;
}
location /media {
root /var/www/example-static;
}
}