Назад | Перейти на главную страницу

Настроить nginx для jboss / tomcat

Чтобы передавать трафик в 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. Это похоже на лучший подход (но я думаю, что, прочитав, он имеет те же ограничения в отношении нетипичных шаблонов длинных / больших запросов / ответов).

http://redmine.lighttpd.net/wiki/1/Docs:ModProxyCore