Django i18n не работает с Nginx. Продолжает перенаправлять на домашнюю страницу

Сейчас у меня есть установка django + gunicorn + nginx.

Все работает:

  1. able to switch between the two language
  2. set the cookies
  3. add the lang prefix in the middle: projurl.com/lang_code/other_dir
  4. able to redirect/stay on the page where language switch happened

Но ...

  • Все 1,2,3,4 работают с django dev server (python manage.py runserver) и gunicorn proj.wsgi:application --bind 0.0.0.0:8000

    .
  • Только 1,2,3 работают с nginx. Он продолжает перенаправлять на домашнюю страницу с нужным языком, но не может остаться на странице, где произошло переключение языка.

    .

proj/urls.py:

urlpatterns = [
    path('i18n/', include('django.conf.urls.i18n')),
]
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

urlpatterns += i18n_patterns(
    re_path(r'^admin/', admin.site.urls),
    re_path(r'', include('app1.urls')),
)

В шаблоне у меня есть точный пример из перевода django i18n: link

{% load i18n %}

<form action="{% url 'set_language' %}" method="post">{% csrf_token %}
    <input name="next" type="hidden" value="{{ redirect_to }}">
    <select name="language">
        {% get_current_language as LANGUAGE_CODE %}
        {% get_available_languages as LANGUAGES %}
        {% get_language_info_list for LANGUAGES as languages %}
        {% for language in languages %}
            <option value="{{ language.code }}"{% if language.code == LANGUAGE_CODE %} selected{% endif %}>
                {{ language.name_local }} ({{ language.code }})
            </option>
        {% endfor %}
    </select>
    <input type="submit" value="Go">
</form> 

nginx.conf

upstream proj {
    server web:8000;
}

server {
    listen 80;

    location /static/ {
        alias /static/;
    }

    location / {
        proxy_pass http://proj;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $host;
        proxy_pass_header "Accept-Language"; # <<== tried this, does not work
        proxy_redirect off;
    }
Вернуться на верх