upstream apache {
server 127.0.0.1:8080;
}
server{
location ~* ^/service/(.*)$ {
proxy_pass http://apache/$1;
proxy_redirect off;
}
}
Powyższy fragment kodu przekierowuje żądania, których adres URL zawiera ciąg „service”, na inny serwer, ale nie zawiera parametrów zapytania.
parameters
nginx
Alex Luya
źródło
źródło
location /service/ { rewrite ^\/service\/(.*) /$1 break; proxy_pass http://apache; }
Używam nieco zmodyfikowanej wersji drugiego podejścia Kolbyjacka z
~
zamiast~*
.źródło
Zmodyfikowałem kod @kolbyjack, aby działał
z parametrami
źródło
proxy_pass
dyrektywa wykonuje przekierowanie po stronie serwera.musisz użyć rewrite, aby przekazać parametry za pomocą proxy_pass, tutaj jest przykład, który zrobiłem dla wdrożenia aplikacji angularjs do s3
S3 Statyczny hosting witryny sieci Web kieruje wszystkie ścieżki do pliku Index.html
dostosowane do twoich potrzeb byłoby coś takiego
jeśli chcesz skończyć w http://127.0.0.1:8080/query/params/
jeśli chcesz skończyć w http://127.0.0.1:8080/service/query/params/ , potrzebujesz czegoś takiego
źródło
/path/params
), ale nie params zapytania (?query=params
)?github gist https://gist.github.com/anjia0532/da4a17f848468de5a374c860b17607e7
źródło
Aby przekierować bez ciągu zapytania, dodaj poniższe wiersze w bloku serwera pod linią portu nasłuchiwania:
Z ciągiem zapytania:
źródło
if
gdy jest to możliwe. W takim przypadku rozwiązanie może być prawidłowe,location
jak pokazano w innych odpowiedziach.pracował z dodaniem $ request_uri proxy_pass http: // apache / $ request_uri;
źródło