Я бы хотел передать некоторые запросы другому серверу по прокси и никогда не отправлять косую черту в конце. Я придумал следующее, что работает, но действительно ли это лучший способ? Такое ощущение, что я иду по долгому пути, хотя, возможно, я слишком долго смотрел на это ...
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;
}
Модификатор ^ ~
избегает любого вмешательства со стороны любого обычного блоки расположения выражений. Подробнее см. в этом документе .
Захват не является жадным, поэтому необязательный завершающий /
будет удален.