Чтобы передавать трафик в 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;
}
}
Другой способ сделать это, как описано в Нравится вики-страница.
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 и тоже работал, помещая местоположение / myapp и proxypass http: // myapp: 8080 / myapp;
Кроме того, эта конфигурация сопоставляет все с приложением Java, что полезно, когда у вас есть хорошие URL-адреса, отображаемые инфраструктурой MVC, такой как Struts.
Вам не обязательно использовать mod_jk, вы можете использовать mod_proxy, т.е. пропускать трафик через HTTP вместо AJP. Если у nginx есть возможность прокси, это тоже должно работать.
Теперь есть довольно свежий ajp_module для nginx. У меня нет опыта с этим, но я думаю, что липкость сеанса и особенно постоянные бэкэнд-соединения весьма полезны для Tomcat. Оба метода (http-прокси или ajp-прокси), к сожалению, негибкие для длительных запросов (комета) или передачи больших файлов (загрузки).
https://github.com/yaoweibin/nginx_ajp_module#readme
lighttpd BTW имеет общий прокси-модуль, который может обрабатывать кодировку FCGI, HTTP, CGIS и AJP13. Это похоже на лучший подход (но я думаю, что, прочитав, он имеет те же ограничения в отношении нетипичных шаблонов длинных / больших запросов / ответов).