Ich habe versucht, den Thin App Server zu verwenden und hatte ein Problem.
Wenn NGINX Proxies die Anforderung an Thin (oder Einhorn) unter Verwendung proxy_pass http://my_app_upstream;
der Anwendung , die modifizierte URL empfängt von nginx gesendet werden ( http://my_app_upstream
).
Was ich möchte, ist, die ursprüngliche URL und die ursprüngliche Anfrage vom Client ohne Änderung zu übergeben, da die App stark davon abhängt.
Der Nginx- Doc sagt:
Wenn URI in unverarbeiteter Form übertragen werden muss, sollte die Direktive proxy_pass ohne URI-Teil verwendet werden.
Ich verstehe jedoch nicht, wie genau das konfiguriert werden soll, da das zugehörige Beispiel tatsächlich URI verwendet:
location /some/path/ {
proxy_pass http://127.0.0.1;
}
Könnten Sie mir bitte helfen, herauszufinden, wie die ursprüngliche Anforderungs-URL des Clients beibehalten werden kann ?
proxy_pass
Direktive zu entfernen .http://my_app_upstream
vshttp://my_app_upstream/
proxy_set_header Host $host
modifiziertem und erstelltem Tomcat / JSP, um zu glauben, dass es sich um eine vom Client angeforderte Domäne handelt. Vielen Dank für die Hilfehttps://example.com/page
Urishttp://example.com/page
Nur proxy_set_header Host $ Host Miss Port für meinen Fall. Gelöst von:
location / { proxy_pass http://BACKENDIP/; include /etc/nginx/proxy.conf; }
und dann in der proxy.conf
proxy_redirect off; proxy_set_header Host $host:$server_port; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
quelle
Ich habe das oben in den Kommentaren gefunden, aber ich denke, es sollte wirklich eine Antwort sein.
quelle
Um perfekt weiterzuleiten, ohne
absoluteURI
die Anfrage und dieHost
in der Kopfzeile zu zerhacken :server { listen 35005; location / { rewrite ^(.*)$ "://$http_host$uri$is_args$args"; rewrite ^(.*)$ "http$uri$is_args$args" break; proxy_set_header Host $host; proxy_pass https://deploy.org.local:35005; } }
Hier zu finden: https://opensysnotes.wordpress.com/2016/11/17/nginx-proxy_pass-with-absolute-url/
quelle
Falls etwas den Speicherort ändert, den Sie bedienen möchten, z. B.
try_files
bleibt die Anforderung für das Back-End erhalten:location / { proxy_pass http://127.0.0.1:8080$request_uri; }
quelle
nginx stellt auch die Variable $ http_host bereit, die den Port für Sie übergibt. Es ist eine Verkettung von Host und Port.
Also musst du nur tun:
quelle
In meinem Szenario habe ich dies über den folgenden Code in der Konfiguration von nginx vhost gemacht
server { server_name dashboards.etilize.com; location / { proxy_pass http://demo.etilize.com/dashboards/; proxy_set_header Host $http_host; }}
$ http_host setzt die URL im Header wie angefordert
quelle
für meinen Auth-Server ... das funktioniert. Ich möchte Optionen für / auth für meine eigene humanisierte Lesbarkeit haben ... oder ich habe es auch von Port / Upstream für Maschine zu Maschine konfiguriert.
.
zu Beginn von conf
#################################################### upstream auth { server 127.0.0.1:9011 weight=1 fail_timeout=300s; keepalive 16; }
In meinem 443 Serverblock
if (-d $request_filename) { rewrite [^/]$ $scheme://$http_host$uri/ permanent; } location /auth { proxy_pass http://$http_host:9011; proxy_set_header Origin http://$host; proxy_set_header Host $http_host:9011; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection $http_connection; proxy_http_version 1.1; }
Am Ende von conf
##################################################################### # # # Proxies for all the Other servers on other ports upstream # # # ##################################################################### ####################### # Fusion # ####################### server { listen 9001 ssl; ############# Lock it down ################ # SSL certificate locations ssl_certificate /etc/letsencrypt/live/allineed.app/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/allineed.app/privkey.pem; # Exclusions include snippets/exclusions.conf; # Security include snippets/security.conf; include snippets/ssl.conf; # Fastcgi cache rules include snippets/fastcgi-cache.conf; include snippets/limits.conf; include snippets/nginx-cloudflare.conf; ########### Location upstream ############## location ~ / { proxy_pass http://auth; proxy_set_header Origin http://$host; proxy_set_header Host $host:$server_port; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection $http_connection; proxy_http_version 1.1; } if (-d $request_filename) { rewrite [^/]$ $scheme://$http_host$uri/ permanent; } }
quelle