Eu preciso de passar o proxy vários segmentos para outro servidor, pode haver até dois 5 segmentos.
O que o nginx precisa corresponder
- example.com/somehash
- example.com/somehash/segment1
- example.com/somehash/segment1/segment2
- example.com/somehash/segment1/segment2/segment3
- example.com/somehash/segment1/segment2/segment3/segment4
- example.com/somehash/segment1/segment2/segment3/segment4/segment5
Neste momento, o código abaixo corresponde apenas
- example.com/somehash
- example.com/somehash/segment1
Para isso, temos este bloco de código:
location ~* ^/([a-z0-9]+)/?$ {
proxy_pass http://@tds/direct/$1?$args;
proxy_set_header Referer $http_referer;
proxy_set_header X-Original-Host $server_name;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-NginX-Proxy true;
proxy_redirect off;
}
location ~* ^/([a-z0-9]+)/([A-Za-zА-Яа-я0-9\-\_\[\]\{\}\.]+)/?$ {
proxy_pass http://@tds/direct/$1/$2?$args;
proxy_set_header Referer $http_referer;
proxy_set_header X-Original-Host $server_name;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-NginX-Proxy true;
proxy_redirect off;
}
Mas agora, pode haver até 5 segmentos, uma das soluções é basicamente adicionar mais 4 locais, por exemplo, para a localização de 5 segmentos seria algo como isto:
location ~* ^/([a-z0-9]+)/([A-Za-zА-Яа-я0-9\-\_\[\]\{\}\.]+)/([A-Za-zА-Яа-я0-9\-\_\[\]\{\}\.]+)/([A-Za-zА-Яа-я0-9\-\_\[\]\{\}\.]+)/([A-Za-zА-Яа-я0-9\-\_\[\]\{\}\.]+)/([A-Za-zА-Яа-я0-9\-\_\[\]\{\}\.]+)/?$ {
proxy_pass http://@tds/direct/$1/$2/$3/$4/$5?$args;
proxy_set_header Referer $http_referer;
proxy_set_header X-Original-Host $server_name;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-NginX-Proxy true;
proxy_redirect off;
}
Mas isso realmente parece uma solução de baixa qualidade, e considerando o link também pode parecer
example.com/somehash/landing/5/segment1/segment2/segment3/segment4/segment5
Esta é uma solução ainda pior, pois com essa abordagem, haverá cerca de 12 locais.
Os segmentos de passagem de proxy para outro servidor ficarão exatamente da mesma forma que parecem com um segmento, portanto, com 5 segmentos, seria algo como isso
@ tds / direct / $ 1 / $ 2 / $ 3 / $ 4 / $ 5 / $ 6 (onde $ 1 é 'somehash' e 2 a 6 são segmentos opcionais)
Existe uma maneira correta de fazer isso?
Obrigado antecipadamente.