2017-01-20 2 views
1

У меня есть следующий конфиг (внутри тега сервера) для моего Nginx сервера:Удаление нежелательных лидирующий слеш от Nginx

location/{ 

    proxy_set_header  Host $host; 
    proxy_set_header  X-Real-IP $remote_addr; 
    proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for; 
    proxy_set_header  X-Forwarded-Proto $scheme; 

    # Fix the “It appears that your reverse proxy set up is broken" error. 
    proxy_pass   http://localhost:5000; 
    proxy_read_timeout 90; 


} 
location /api { 
    proxy_set_header  Host $host; 
    proxy_set_header  X-Real-IP $remote_addr; 
    proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for; 
    proxy_set_header  X-Forwarded-Proto $scheme; 

    # Fix the “It appears that your reverse proxy set up is broken" error. 
    proxy_pass   http://localhost:2233/; 
    proxy_read_timeout 90; 
    proxy_redirect default; 
} 

теперь я пытаюсь доступа/API/Идент/логин/через мой веб-браузера. В порту 2233 у меня есть сервер python с запуском Flask. Теперь в консоли питона я получаю:

"GET //auth/login/ HTTP/1.0" 404 - 

на мой взгляд, этот путь неаккуратно, а также не сконфигурировано в колбе, то почему существует 404 ответа (для/Идент/входа в систему у меня есть маршрут).

Как избавиться от ведущей косой черты nginx?

ответ

1

Вы используете директиву proxy_pass для псевдонима /api/foo по номеру /foo. Псевдоним имеет тенденцию работать лучше всего, если оба исходных и целевых URI заканчиваются / или ни с конца, ни с /.

Итак:

location /api/ { 
    proxy_pass http://localhost:2233/; 
    ... 
} 

правильно карту /api/foo к /foo без добавления двух- / в самом начале. См. this document.

Это также может означать, что голый URI /api может работать некорректно.

В качестве альтернативы выполнить псевдоним с помощью rewrite ... break; вместо proxy_pass:

location /api { 
    rewrite ^/api(?:/(.*))?$ /$1 break; 
    proxy_pass http://localhost:2233; 
    ... 
} 

this document См подробности.

+0

Спасибо за код перезаписи - работал – pytomaniaq

Смежные вопросы