Możesz sprawdzić mój post na blogu na temat konfigurowania Nginx jako odwrotnego proxy dla Tomcat . Może to być dla Ciebie interesujące, ponieważ przykład zawiera kilka dodatkowych poprawek, takich jak buforowanie treści tylko dla niezalogowanych użytkowników i przekierowywanie w różnych językach.
Vladimir Grichina
Odpowiedzi:
17
W przypadku kasy nginx ich dokumenty tutaj . Obsługa proxy jest wbudowana.
W poniższym przykładzie z ich strony zobaczysz, że określony ruch portu 80 jest wysyłany do pojedynczego kontenera serwletu działającego na porcie 8080.
Pamiętaj, że jeśli chcesz uruchomić wiele kontenerów serwletów zaplecza (w celu równoważenia obciążenia, skalowania itp.), Powinieneś spojrzeć na Upstream Fair Module , który wyśle ruch do najmniej obciążonego serwera zaplecza. Nie jest wysyłany przez defaul w / nginx.
Testowałem go również z / myapp zamiast root i działa również, umieszczając lokalizację / myapp i proxyypass http: // myapp: 8080 / myapp ;
Również ta konfiguracja odwzorowuje wszystko na aplikację Java, co jest przydatne, gdy masz ładne adresy URL, które są odwzorowane przez środowisko MVC, takie jak Struts.
Nie musisz używać mod_jk, możesz użyć mod_proxy, tzn. Przepuszczać ruch przez HTTP zamiast AJP. Jeśli nginx ma możliwość proxy, to powinno działać równie dobrze.
Problem z serwerem proxy polega na tym, że jest on wolniejszy niż mod_jk / fastcgi / ajp
Adam Gent
2
Istnieje teraz całkiem nowy ajp_module dla nginx . Nie mam z tym doświadczenia, ale myślę, że lepkość sesji, a zwłaszcza trwałe połączenia zaplecza są bardzo pomocne dla Tomcat. Obie metody (serwer proxy HTTP lub serwer proxy ajp) są niestety mało elastyczne w przypadku długich zapytań (kometa) lub przesyłania dużych plików (przesyłanie).
lighttpd BTW ma ogólny moduł proxy, który obsługuje kodowanie FCGI, HTTP, CGIS i AJP13. To wygląda na lepsze podejście (ale myślę, że po przeczytaniu ma takie same ograniczenia w odniesieniu do nietypowych długich / dużych wzorców zapytań / odpowiedzi).
Odpowiedzi:
W przypadku kasy nginx ich dokumenty tutaj . Obsługa proxy jest wbudowana.
W poniższym przykładzie z ich strony zobaczysz, że określony ruch portu 80 jest wysyłany do pojedynczego kontenera serwletu działającego na porcie 8080.
Pamiętaj, że jeśli chcesz uruchomić wiele kontenerów serwletów zaplecza (w celu równoważenia obciążenia, skalowania itp.), Powinieneś spojrzeć na Upstream Fair Module , który wyśle ruch do najmniej obciążonego serwera zaplecza. Nie jest wysyłany przez defaul w / nginx.
źródło
Innym sposobem, aby to zrobić, jest opisany na stronie wiki LikeApache .
Testowałem go również z / myapp zamiast root i działa również, umieszczając lokalizację / myapp i proxyypass http: // myapp: 8080 / myapp ;
Również ta konfiguracja odwzorowuje wszystko na aplikację Java, co jest przydatne, gdy masz ładne adresy URL, które są odwzorowane przez środowisko MVC, takie jak Struts.
źródło
Nie musisz używać mod_jk, możesz użyć mod_proxy, tzn. Przepuszczać ruch przez HTTP zamiast AJP. Jeśli nginx ma możliwość proxy, to powinno działać równie dobrze.
źródło
Istnieje teraz całkiem nowy ajp_module dla nginx . Nie mam z tym doświadczenia, ale myślę, że lepkość sesji, a zwłaszcza trwałe połączenia zaplecza są bardzo pomocne dla Tomcat. Obie metody (serwer proxy HTTP lub serwer proxy ajp) są niestety mało elastyczne w przypadku długich zapytań (kometa) lub przesyłania dużych plików (przesyłanie).
https://github.com/yaoweibin/nginx_ajp_module#readme
lighttpd BTW ma ogólny moduł proxy, który obsługuje kodowanie FCGI, HTTP, CGIS i AJP13. To wygląda na lepsze podejście (ale myślę, że po przeczytaniu ma takie same ograniczenia w odniesieniu do nietypowych długich / dużych wzorców zapytań / odpowiedzi).
http://redmine.lighttpd.net/wiki/1/Docs:ModProxyCore
źródło