Налаштуйте nginx для jboss / tomcat


26

Для передачі трафіку JBoss / TomCat на порт 80 за допомогою Apache ми використовували для установки та налаштування mod_jk.

Чи є еквівалент nginx? В основному хочеться, щоб весь трафік порту 80 передався jboss.


Ви можете перевірити мою публікацію в блозі щодо налаштування Nginx як зворотного проксі для Tomcat . Вам це може бути цікаво, оскільки приклад включає декілька додаткових налаштувань як кешування вмісту лише для користувачів, які не ввійшли в систему, і перенаправлення на різні мови.
Володимир Гричина

Відповіді:


17

Для оформлення nginx їх документи тут . Вбудована підтримка проксі.

У наведеному нижче прикладі з їх сайту ви побачите, що певний трафік порту 80 надсилається до одного контейнера сервлетів, що працює на порт 8080.

Зауважте, що якщо ви хочете запустити кілька контейнерів сервлетів для сервера (для балансування навантаження, масштабування тощо), ви повинні подивитися на модуль ярмарку вгору, який спрямовуватиме трафік на найменш завантажений сервер сервера. Він не поставляється за замовчуванням w / 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;
  }
}

3

Ще один спосіб зробити це так, як це описано на вікі-сторінці 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 замість корінця, а також працює, розміщуючи location / myapp та proxypass http: // myapp: 8080 / myapp ;

Крім того, ця конфігурація відображає все на додатку Java, що корисно, коли у вас є гарні URL-адреси, відображені в рамках MVC-фрейму, як Struts.


2

Вам не потрібно використовувати mod_jk, ви можете використовувати mod_proxy, тобто передавати трафік через HTTP замість AJP. Якщо nginx має проксі-здатність, це має працювати так само добре.


7
Проблема з проксі-сервером полягає в тому, що він повільніше, ніж mod_jk / fastcgi / ajp
Адам Гент

2

Зараз існує досить свіжий 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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.