Я хотел бы проксировать некоторые запросы на другой сервер и никогда не отправлять завершающую косую черту. Я придумал следующее, что работает, но действительно ли это лучший способ? Такое чувство, что я иду по длинному пути, хотя, может быть, я слишком долго смотрел на это ...
location ~ ^/proxy(?<proxy_to_path>.+[^/])/?$ {
proxy_pass http://127.0.0.1:8080$proxy_to_path;
}
Лично мне не нравятся сложные регулярные выражения в location
директивы, потому что nginx
необходимо проверить каждый запрошенный URI. Вы можете использовать более простую схему, используя один или несколько rewrite...break
заявления.
Например:
location ^~ /proxy/ {
rewrite ^/proxy(.+?)/?$ $1 break;
proxy_pass http://127.0.0.1:8080;
}
В ^~
модификатор избегает любого вмешательства со стороны любых блоков расположения регулярных выражений. Видеть этот документ для большего.
Захват не является жадным, так что дополнительный трейлинг /
будет удален.