Ich arbeite an einer neuen Version einer API, die eine vollständige Neufassung der aktuellen API ist. Um zu beginnen, wird die neue API keine Anfragen bearbeiten, aber im Laufe der Zeit werden mehr und mehr Routen in der neuen API implementiert (die meisten von ihnen verwenden denselben Pfad, den sie in der alten API verwenden). Ich habe nginx auf dem gleichen Server wie der neue api-Dienst eingerichtet (Knoten läuft auf Port 3000) und der alte api-Dienst läuft auf api.example.com (192.168.1.25). Was ich tun möchte, ist api.example.com auf dem neuen api-Dienst anzugeben, dann, wenn eine Anfrage eingeht, habe nginx zuerst die Anfrage auf dem neuen api-Dienst (127.0.0.1:3000) und wenn diese Anfrage eine 404 zurückgibt , dann sende die Anfrage an den alten api-Dienst (192.168.1.25).Einrichten von Nginx zu Proxy fehlgeschlagene Anforderungen auf einem Server zu einem anderen
Antwort
Wenn legen Sie Ihren Endpunkt unter Verwendung eines ‚upstream‘, dann können Sie den proxy_pass konfigurieren wechseln the next upstream anprobieren 404.
upstream api {
# new
server localhost:3000;
# old
server 129.168.1.25:3000 backup;
}
location/{
proxy_pass http://api;
proxy_next_upstream http_404 non_idempotent;
}
Eine Sache jedoch, dass ich nicht sicher bin, ob Sie ist kann eigentlich Wechseln Sie zu einem "Backup" -Server als Teil von proxy_next_upstream, da der Server technisch einwandfrei ist.
Ich endete damit, dies mit Header und Cookie-Unterstützung mit der folgenden Konfiguration zu arbeiten.
http {
upstream new_api_backend {
server 127.0.0.1:3000;
}
upstream old_api_backend {
server old.example.com:443;
}
server {
listen 80;
return 301 https://$http_host$request_uri;
}
server {
proxy_http_version 1.1;
listen 443;
ssl on;
ssl_certificate /etc/nginx/ssl/my_cert.crt;
ssl_certificate_key /etc/nginx/ssl/my_cert.key;
location/{
proxy_intercept_errors on;
error_page 417 = @old_backend;
proxy_pass http://new_api_backend;
}
location @old_backend {
proxy_set_header Host old.example.com;
proxy_redirect https://old.example.com/ https://$http_host/;
proxy_cookie_domain old.example.com $http_host;
proxy_pass https://old_api_backend;
}
}
}
Beachten Sie die error_page 417 = @old_backend
. Dies macht nginx eine 417
Antwort vom neuen Server als Auslöser, um den alten Server zu verwenden. Dann habe ich gerade eine Catchall-Route zum neuen Server hinzugefügt, um 417
zurückzugeben, so dass 404
s immer noch verwendet werden kann, wenn es auf dem neuen Server angemessen ist. 417 Expectation Failed
möglicherweise nicht der am besten geeignete Code für diesen Anwendungsfall, aber es sah nah genug aus.
Auch dies wird http://example.com/some/path
zu https://old.example.com/some/path
korrekt Proxy.
- 1. Nginx Reverse-Proxy auf anderen Server
- 2. nginx: Weiterleitung SSL-Verbindung zu einem anderen Server
- 3. Nginx-Proxy zu Kometen
- 4. Nginx Reverse Proxy zu Remote Server
- 5. Nginx-Reverse-Proxy für einen anderen Docker-Container einrichten
- 6. nginx Umleitung (oder Proxy) zu einer anderen App auf localhost
- 7. Einrichten von Subdomains auf Nginx
- 8. nicht Proxy von Nginx zu Kibana
- 9. Warteschlangenmigration von einem EMX-Server zu anderen
- 10. Dynamische proxy_pass in nginx zu einem anderen Pod in Kubernetes
- 11. NGINX Proxy zu Wordpress-Website
- 12. Hinzufügen von Cookies zu separaten Headern in NginX Proxy-Server
- 13. Wechsel von Google AppEngine zu einem anderen Server
- 14. Nginx Proxy https zu http auf Nicht-Standard-Port?
- 15. Laravel - Auftrag auf einem Server, bearbeitet auf einem anderen
- 16. umleiten alles unter einem Pfad zu einer anderen Domäne - Nginx
- 17. Wie von einem Chef-Server zu einem anderen Chef-Server zu migrieren
- 18. Wie forward Proxy auf dem Windows-Server für ausgehende HTTP- und HTTPS-Anforderungen einrichten?
- 19. Subdomain umleiten zu einem anderen Server
- 20. Wie programm einen Proxy zu einem NSURLSession
- 21. Nginx Proxy-Subdomain zu Laravel URL
- 22. Übergang von einem ListFragment zu einem anderen
- 23. Fehlgeschlagene Web Service Unit-Tests hinter einem Proxy in Eclipse
- 24. Wie Nginx hinter einem Unternehmens-Proxy konfigurieren
- 25. Forward-Anfrage-Header von Nginx-Proxy-Server
- 26. 301 Redirect auf einem Nginx-Rechner, auf dem ein Nicht-Standard-Port hinter einem Proxy läuft
- 27. Zuordnung eines URL-Pfads zu einem Server in nginx
- 28. Navigieren von einem Fragment zu einem anderen Fragment auf Knopfdruck
- 29. Proxy eine Flasche App auf gunicorn zu einem subpath in nginx läuft
- 30. Senden von Daten von einem Modal zu einem anderen
Möglicherweise anstelle von "Backup" könnten Sie Gewicht = 0; –