Вы можете проверить мой пост в блоге о настройке Nginx в качестве обратного прокси-сервера для Tomcat . Это может быть вам интересно, так как пример включает в себя несколько дополнительных настроек в качестве кешируемого контента только для не авторизованных пользователей и перенаправления на разные языки.
В приведенном ниже примере с их сайта вы увидите, что определенный трафик порта 80 отправляется в один контейнер сервлета, работающий на порту 8080.
Обратите внимание, что если вы хотите запустить несколько контейнеров сервлетов бэкэнда (для балансировки нагрузки, масштабирования и т. Д.), Вам следует обратиться к модулю Upstream Fair, который будет отправлять трафик на бэкэнд-сервер с наименьшей нагрузкой. Он не поставляется по умолчанию с nginx.
Я также проверил это с / myapp вместо root и работает так же, поместив location / myapp и proxypass http: // myapp: 8080 / myapp ;
Кроме того, эта конфигурация сопоставляет все с приложением Java, что полезно, когда у вас есть хорошие URL-адреса, которые сопоставляются с инфраструктурой MVC, такой как Struts.
Вам не нужно использовать mod_jk, вы можете использовать mod_proxy, то есть передавать трафик через HTTP вместо AJP. Если у nginx есть способность прокси, это должно работать так же хорошо.
Проблема с прокси в том, что он медленнее, чем mod_jk / fastcgi / ajp
Адам Гент,
2
Теперь есть довольно свежий ajp_module для nginx . У меня нет с этим опыта, но я думаю, что прилипание сеанса и особенно постоянные соединения с бэкэндом весьма полезны для Tomcat. Оба метода (http proxy или ajp proxy), к сожалению, негибки для длинных запросов (комета) или для передачи больших файлов (загрузки).
lighttpd BTW имеет общий прокси-модуль, который может обрабатывать кодировки FCGI, HTTP, CGIS и AJP13. Это выглядит как лучший подход (но я думаю, что его чтение имеет те же ограничения в отношении нетипичных шаблонов длинных / больших запросов / ответов).
Ответы:
Для nginx ознакомьтесь со своими документами здесь . Поддержка прокси встроена.
В приведенном ниже примере с их сайта вы увидите, что определенный трафик порта 80 отправляется в один контейнер сервлета, работающий на порту 8080.
Обратите внимание, что если вы хотите запустить несколько контейнеров сервлетов бэкэнда (для балансировки нагрузки, масштабирования и т. Д.), Вам следует обратиться к модулю Upstream Fair, который будет отправлять трафик на бэкэнд-сервер с наименьшей нагрузкой. Он не поставляется по умолчанию с nginx.
источник
Еще один способ сделать это, как описано на вики-странице LikeApache .
Я также проверил это с / myapp вместо root и работает так же, поместив location / myapp и proxypass http: // myapp: 8080 / myapp ;
Кроме того, эта конфигурация сопоставляет все с приложением Java, что полезно, когда у вас есть хорошие URL-адреса, которые сопоставляются с инфраструктурой MVC, такой как Struts.
источник
Вам не нужно использовать mod_jk, вы можете использовать mod_proxy, то есть передавать трафик через HTTP вместо AJP. Если у nginx есть способность прокси, это должно работать так же хорошо.
источник
Теперь есть довольно свежий ajp_module для nginx . У меня нет с этим опыта, но я думаю, что прилипание сеанса и особенно постоянные соединения с бэкэндом весьма полезны для Tomcat. Оба метода (http proxy или ajp proxy), к сожалению, негибки для длинных запросов (комета) или для передачи больших файлов (загрузки).
https://github.com/yaoweibin/nginx_ajp_module#readme
lighttpd BTW имеет общий прокси-модуль, который может обрабатывать кодировки FCGI, HTTP, CGIS и AJP13. Это выглядит как лучший подход (но я думаю, что его чтение имеет те же ограничения в отношении нетипичных шаблонов длинных / больших запросов / ответов).
http://redmine.lighttpd.net/wiki/1/Docs:ModProxyCore
источник