Nginx 索引不在项目根目录

Nginx 索引不在项目根目录

我有一个 index.html 页面,它与我的其他客户端资源 ( /opt/django/media/index.html) 一起存储。我可以让 nginx 将该页面作为仅针对域名的请求的索引,但它会将该页面视为位于项目根目录中,而不是位于媒体目录中。这意味着,以前可以在页面中访问的图像等内容现在images/123.png必须通过media/images/123.png我的 index.html。我应该只更新页面中的资源路径,还是有更好的方法?我的配置如下:

server {
    listen   80;
    server_name localhost;

    access_log /opt/django/logs/nginx/vc_access.log;
    error_log  /opt/django/logs/nginx/vc_error.log;

    # no security problem here, since / is alway passed to upstream
    root /opt/django/;
    location = / {
        index media/index.html;
    }
    # serve directly - analogous for static/staticfiles
    location /media/ {
        # if asset versioning is used
        if ($query_string) {
            expires max;
        }
    }
    location /static/ {
        # if asset versioning is used
        if ($query_string) {
            expires max;
        }
    }
    location /metro/ {
        proxy_pass_header Server;
        proxy_set_header Host $http_host;
        proxy_redirect off;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Scheme $scheme;
        proxy_connect_timeout 10;
        proxy_read_timeout 10;
        proxy_pass http://localhost:8080/;
    }
    location / {
        proxy_pass_header Server;
        proxy_set_header Host $http_host;
        proxy_redirect off;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Scheme $scheme;
        proxy_connect_timeout 10;
        proxy_read_timeout 10;
        proxy_pass http://localhost:8000/;
    }
    # what to serve if upstream is not available or crashes
    error_page 500 502 503 504 /media/50x.html;
}

答案1

这是一份工作try_files

类似这样的事情应该可以让你开始:

server {
    # ...

    root /opt/django;

    location @django {
        proxy_pass_header Server;
        proxy_set_header Host $http_host;
        proxy_redirect off;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Scheme $scheme;
        proxy_connect_timeout 10;
        proxy_read_timeout 10;
        proxy_pass http://localhost:8000/;
    }
    # what to serve if upstream is not available or crashes
    error_page 500 502 503 504 /media/50x.html;

    location / {
        try_files /media$uri $uri $uri/ @django;
    }
}

相关内容