Для передачи трафика на JBoss / TomCat через порт 80 с использованием Apache мы использовали его для установки и настройки mod_jk
.
Есть ли эквивалент для nginx? Как правило, требуется, чтобы весь трафик порта 80 передавался в jboss.
Для передачи трафика на JBoss / TomCat через порт 80 с использованием Apache мы использовали его для установки и настройки mod_jk
.
Есть ли эквивалент для nginx? Как правило, требуется, чтобы весь трафик порта 80 передавался в jboss.
Ответы:
Для nginx ознакомьтесь со своими документами здесь . Поддержка прокси встроена.
В приведенном ниже примере с их сайта вы увидите, что определенный трафик порта 80 отправляется в один контейнер сервлета, работающий на порту 8080.
Обратите внимание, что если вы хотите запустить несколько контейнеров сервлетов бэкэнда (для балансировки нагрузки, масштабирования и т. Д.), Вам следует обратиться к модулю Upstream Fair, который будет отправлять трафик на бэкэнд-сервер с наименьшей нагрузкой. Он не поставляется по умолчанию с nginx.
server {
listen 80;
server_name YOUR_DOMAIN;
root /PATH/TO/YOUR/WEB/APPLICATION;
location / {
index index.jsp;
}
location ~ \.do$ {
proxy_pass http://localhost:8080;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
}
location ~ \.jsp$ {
proxy_pass http://localhost:8080;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
}
location ^~/servlets/* {
proxy_pass http://localhost:8080;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
}
}
Еще один способ сделать это, как описано на вики-странице LikeApache .
server {
listen myhost:80;
server_name myhost;
location / {
root /path/to/myapp/public;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://myapp:8080;
}
}
Я также проверил это с / 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. Это выглядит как лучший подход (но я думаю, что его чтение имеет те же ограничения в отношении нетипичных шаблонов длинных / больших запросов / ответов).