Конфигурация Nginx со статическими файлами под Django - PullRequest
0 голосов
/ 04 мая 2019

Я устанавливаю конфигурацию Nginx с моим проектом Django. Чтобы предоставить некоторый статический файл без показа /static/ в URL, Я добавил несколько правил перезаписи в конфигурации Nginx.

Вот часть моей конфигурации Nginx:

    location /static/ {
        location ~* \.(png|jpg|jpeg|gif|css|js)$ {
            access_log off;
            expires 30d;
        }
        alias /path/to/myproject/static/;
    }

    location ~ ^/favicon.ico$ {
        rewrite ^/favicon.ico$ /static/favicon.ico;
    }

    location /foo/ {
        rewrite ^/foo/(.*)$ /static/abc/$1;
    }

    location /bar/ {
        rewrite ^/bar/(.*)$ /static/bar/$1;
    }

    location / {
        fastcgi_pass myproject;
        include django_fastcgi_params;
        proxy_http_version 1.1;
        proxy_set_header Connection "";
    }

Когда я получу доступ к https://myproject.com/foo,, отобразится 404 страница Django. Я думаю, это потому, что в Nginx нет подходящего местоположения (должно заканчиваться косой чертой /) и нет соответствующего URL-адреса в urls.py.

в Django.

Когда я получу доступ к https://myproject.com/foo/,, в папке myproject/static/foo/ будет отображаться index.html, или будет 403 Запрещено, если нет index.html.

Но я обнаружил, что ...

Когда я получу доступ к https://myproject.com/foo/abc,, он будет 301 постоянно перемещен в https://myproject.com/static/foo/abc/

Когда я получу доступ к https://myproject.com/foo/abc/,, он будет напрямую отображать https://myproject.com/foo/abc/,, который является index.html файлом в myproject/static/abc/

Почему эти два URL работают по-разному?

Есть ли какие-либо изменения, которые я должен сделать?

1 Ответ

0 голосов
/ 04 мая 2019

Изменить настройку APPEND_SLASH=False в settings.py проекта django.Для получения дополнительной информации см. https://docs.djangoproject.com/en/2.2/ref/settings/#append-slash

...