Sie können meinen Blog-Beitrag zur Konfiguration von Nginx als Reverse-Proxy für Tomcat lesen . Dies kann für Sie interessant sein, da beispielsweise nur für nicht angemeldete Benutzer und für die Umleitung für verschiedene Sprachen einige zusätzliche Änderungen als Caching-Inhalt enthalten sind.
Vladimir Grichina
Antworten:
17
Für Nginx Checkout ihre Dokumente hier . Proxy-Unterstützung ist eingebaut.
In dem folgenden Beispiel auf ihrer Site sehen Sie, dass spezifischer Datenverkehr für Port 80 an einen einzelnen Servlet-Container gesendet wird, der auf Port 8080 ausgeführt wird.
Wenn Sie mehrere Back-End-Servlet-Container ausführen möchten (zum Lastenausgleich, zur Skalierung usw.), sollten Sie sich das Upstream Fair-Modul ansehen , das Datenverkehr an den am wenigsten ausgelasteten Back-End-Server sendet. Es wird nicht standardmäßig mit Nginx ausgeliefert.
Ich habe es auch mit / myapp anstelle von root getestet und funktioniert auch mit location / myapp und proxypass http: // myapp: 8080 / myapp ;
Außerdem ordnet diese Konfiguration alles der Java-Anwendung zu. Dies ist hilfreich, wenn Sie nette URLs haben, die von einem MVC-Framework wie Struts zugeordnet werden.
Sie müssen nicht mod_jk verwenden, sondern können mod_proxy verwenden, dh den Datenverkehr über HTTP anstelle von AJP weiterleiten. Wenn Nginx Proxy-Fähigkeit hat, sollte das genauso gut funktionieren.
Das Problem mit einem Proxy ist, dass es langsamer ist als mod_jk / fastcgi / ajp
Adam Gent
2
Es gibt jetzt eine ziemlich frisch ajp_module für nginx . Ich habe keine Erfahrung damit, aber ich denke, dass die Sitzungsstabilität und insbesondere die beständigen Back-End-Verbindungen für Tomcat sehr hilfreich sind. Beide Methoden (http proxy oder ajp proxy) sind leider unflexibel für Langzeitanfragen (comet) oder große Dateiübertragungen (uploads).
lighttpd BTW verfügt über ein allgemeines Proxy-Modul, das FCGI-, HTTP-, CGIS- und AJP13-Codierung verarbeiten kann. Dies sieht nach einem besseren Ansatz aus (aber ich denke, dass es beim Lesen die gleichen Einschränkungen in Bezug auf untypische lange / große Anforderungs- / Antwortmuster gibt).
Antworten:
Für Nginx Checkout ihre Dokumente hier . Proxy-Unterstützung ist eingebaut.
In dem folgenden Beispiel auf ihrer Site sehen Sie, dass spezifischer Datenverkehr für Port 80 an einen einzelnen Servlet-Container gesendet wird, der auf Port 8080 ausgeführt wird.
Wenn Sie mehrere Back-End-Servlet-Container ausführen möchten (zum Lastenausgleich, zur Skalierung usw.), sollten Sie sich das Upstream Fair-Modul ansehen , das Datenverkehr an den am wenigsten ausgelasteten Back-End-Server sendet. Es wird nicht standardmäßig mit Nginx ausgeliefert.
quelle
Eine andere Möglichkeit, es so zu machen, wie es auf der LikeApache- Wiki-Seite beschrieben ist.
Ich habe es auch mit / myapp anstelle von root getestet und funktioniert auch mit location / myapp und proxypass http: // myapp: 8080 / myapp ;
Außerdem ordnet diese Konfiguration alles der Java-Anwendung zu. Dies ist hilfreich, wenn Sie nette URLs haben, die von einem MVC-Framework wie Struts zugeordnet werden.
quelle
Sie müssen nicht mod_jk verwenden, sondern können mod_proxy verwenden, dh den Datenverkehr über HTTP anstelle von AJP weiterleiten. Wenn Nginx Proxy-Fähigkeit hat, sollte das genauso gut funktionieren.
quelle
Es gibt jetzt eine ziemlich frisch ajp_module für nginx . Ich habe keine Erfahrung damit, aber ich denke, dass die Sitzungsstabilität und insbesondere die beständigen Back-End-Verbindungen für Tomcat sehr hilfreich sind. Beide Methoden (http proxy oder ajp proxy) sind leider unflexibel für Langzeitanfragen (comet) oder große Dateiübertragungen (uploads).
https://github.com/yaoweibin/nginx_ajp_module#readme
lighttpd BTW verfügt über ein allgemeines Proxy-Modul, das FCGI-, HTTP-, CGIS- und AJP13-Codierung verarbeiten kann. Dies sieht nach einem besseren Ansatz aus (aber ich denke, dass es beim Lesen die gleichen Einschränkungen in Bezug auf untypische lange / große Anforderungs- / Antwortmuster gibt).
http://redmine.lighttpd.net/wiki/1/Docs:ModProxyCore
quelle