nginx 'proxy pass' не может иметь URI-часть в местоположении?
у меня есть location
блок
location @test{
proxy_pass http://localhost:5000/1;
}
но nginx жалуется, что "proxy_pass cannot have URI part in location given by regular expression..."
кто-нибудь знает, что может быть неправильно?
Я пытаюсь запросить localhost:5000/1, когда загрузка завершена:
location /upload_attachment {
upload_pass @test;
upload_store /tmp;
...
}
3 ответов
технически просто добавление URI должно работать, потому что это документы и он говорит, что он должен работать, так
location @test{
proxy_pass http://localhost:5000/1/; # with a trailing slash
}
должно было сработать отлично, но так как вы сказали, что это не так, я предложил другой путь, трюк в том, что вместо прохождения /my/uri
to localhost:5000/1
, мы проходим /1/my/uri
to localhost:5000
,
вот что сделал мой переписчик
rewrite ^ /1
значение переписать весь URL, добавить его с /1
затем добавьте остальные, весь блок становится
location @test{
rewrite ^ /1;
proxy_pass http://localhost:5000;
}
Примечание: @Fleshgrinder ответ объясняя, почему первый метод не работает.
что на самом деле здесь происходит?
nginx не может обработать желаемую часть URI в proxy_pass
директива, потому что вы находитесь в именованном местоположении (отсюда сообщение об ошибке). Это потому что nginx построено в модульном способе и каждый блок конфигурации прочитан в различных этапах различными модулями. Поэтому просто помните, что вы не можете иметь URI в своем
попробуйте опустить " / " (часть URI) и проверьте.
location @test{
proxy_pass http://localhost:5000;
}