kombiniert habe ich Nginx Proxy mit folgender Konfiguration:Wie Kontextpfad in nginx abzustreifen, zuul und oauth
upstream gateway_server {
ip_hash; # sticky session on as there will be more than one destination
server app.server:8080;
}
server {
listen 0.0.0.0:80;
server_name my.domain.net;
root /var/www/gateway;
proxy_redirect off;
proxy_buffering off;
proxy_connect_timeout 5s;
proxy_read_timeout 120s;
proxy_next_upstream error timeout http_502 http_503 http_504;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Proto $http_x_forwarded_proto;
proxy_set_header Host $host;
proxy_intercept_errors on;
location/{
proxy_pass http://gateway_server/my-application/;
}
location /loginPage {
proxy_pass http://gateway_server/loginPage;
}
location ^~ /login {
proxy_pass http://gateway_server/login;
}
location /logout {
proxy_pass http://gateway_server/logout;
}
location /css {
proxy_pass http://gateway_server/css;
}
error_page 502 503 504 @maintenance;
location @maintenance {
rewrite ^(.*)$ /maintenance.html break;
}
error_page 404 /404.html;
location = /404.html {
rewrite ^(.*)$ /404.html break;
}
error_page 500 /500.html;
location = /500.html {
rewrite ^(.*)$ /500.html break;
}
}
Der Gateway-Server an meinem zuul Proxy zeigt, die eine einfache SpringBoot Anwendung ist kommentierten mit @EnableZuulProxy. Die Routen werden wie folgt konfiguriert:
# Zuul configuration
zuul:
host:
socket-timeout-millis: 300000 # 5 minutes
sensitiveHeaders:
routes:
my-application:
path: /my-application/**
serviceId: my-application
stripPrefix: false
my-Anwendung ist eine Feder Boot-Anwendung mit Winkel Front-End kombiniert. Neben dem Routing ist Gateway-Server auch verantwortlich für die Authentifizierung - es kommuniziert mit out OAuth2 Multi-Provider. Wenn ein Benutzer nicht authentifiziert ist, und versucht, my.domain.net Nginx Proxies der Aufruf an zuul (app.server: 8080/my-application/) zu nennen Gateway-Server OAuth2 Protokoll startet und leitet Benutzer auf eine Login-Seite, wo man seinen/ihren Provider (facebook, google, intern) auswählen kann. Die gesamte Authentifizierung wird vom Frühling verwaltet - ich mache keine benutzerdefinierten Dinge. Nach erfolgreichem Login wird der Benutzer zu my.domain.net/my-application anstatt zu my.domain.net umgeleitet. Haben Sie eine Idee, welches Element in meiner Infrastruktur diesen Kontextpfad hinzufügt? Hast du eine Idee, wie ich es entfernen könnte?
Ich kann stripPrefix = true hier nicht verwenden, da "/ my-application" der Kontextpfad in diesem Dienst ist (und dies ist wichtig, da die Anwendung Ajax-Aufrufe verwendet, um zahlreiche Ressourcen unter diesem Pfad zu erhalten) –