Mam kilka punktów końcowych interfejsu API, które chcę obsługiwać z jednego miejsca /api
z podścieżkami prowadzącymi do różnych punktów końcowych. W szczególności chcę, aby webdis był dostępny pod adresem /api
i zastrzeżony interfejs API dostępny pod adresem /api/mypath
.
Nie martwię się o kolizje z interfejsem API webdis, ponieważ używam ścieżek podrzędnych, które raczej nie kolidują z nazwami komend redis, a także mam pełną kontrolę nad projektem interfejsu API, aby uniknąć kolizji.
Oto plik konfiguracyjny z mojego serwera testowego, na którym hakowałem:
server {
listen 80;
server_name localhost;
server_name 192.168.3.90;
server_name 127.0.0.1;
location / {
root /home/me/src/phoenix/ui;
index index.html;
}
# temporary hardcoded workaround
location = /api/mypath/about {
proxy_pass http://localhost:3936/v1/about;
}
location /api {
rewrite ^/api/(.*)$ /$1 break;
proxy_pass http://localhost:7379/;
}
# tried this but it gives "not found" error
#location ^~ /api/mypath/ {
# rewrite ^/api/mypath/(.*)$ /$1 break;
# proxy_pass http://localhost:3936/v1/;
#}
#
#location ^~ /api {
# rewrite ^/api/(.*)$ /$1 break;
# proxy_pass http://localhost:7379/;
#}
}
Jak mogę zmienić moje obejście, aby wszelkie żądania /api/mypath/*
trafiały do punktu końcowego w porcie 3936, a wszystko inne do portu 7379?
tried this to no avail
? Co się stało po włączeniu tej dyrektywy lokalizacji? Czas połączenia minął? Lokalizacja niezgodna?