提供静态文件失败 - nginx

提供静态文件失败 - nginx

我整晚都在寻找和尝试,但没有成功。

我配置了 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;
    }

}

相关内容