KazakovDenis
@KazakovDenis
Python developer

Почему дублируется URL?

Проблема: получаю "https://example.com,example.com/some-uri/" вместо "https://example.com/some-uri/".

В error.log ошибок нет и в access.log ничего нет, т.к. запрос не доходит. На localhost без, соответственно, nginx всё работает нормально. Так что судя по всему, проблема возникает где-то между фласком и Nginx.

Сайт верно возвращает ответы, если URL закрывается слешем, например:

Проблема всегда возникает, когда Flask возвращает redirect(url_for(...)). Но я не знаю, что происходит внутри Flask-admin и иже с ним, поэтому не берусь утверждать, что проблема в редиректах.

Мой конфиг nginx (/etc/nginx/nginx.conf не изменял):
server {
    server_name example.com www.example.com;
    root /path/to/app;

    listen 443 ssl;                                                    
    //...

    location / {
        include          /etc/nginx/proxy_params;
        proxy_pass       http://127.0.0.1:8000;
        proxy_set_header Host            $host;
        proxy_set_header X-Real-IP       $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }

    location ~ \.(jpg|jpeg|png|gif|js|txt|pdf) {
        root /path/to/static/;
    }
}

server {
    if ($host = www.example.com) {
        return 301 https://$host$request_uri;
    }                                               

    if ($host = example.com) {
        return 301 https://$host$request_uri;
    }                                               

    listen 80;
    server_name example.com www.example.com;
    return 404;                                     
}


Что не так?
  • Вопрос задан
  • 189 просмотров
Пригласить эксперта
Ответы на вопрос 1
mahmudchon
@mahmudchon
Думаю Вам не хватает тут try_files. Сейчас у Вас работает ссылка с /, потому что по факту такая папка есть. Как пример:
...
    location / {
        try_files $uri $uri/ /index.php$is_args$args;
    }
...
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы