Jboss / tomcat için nginx'i yapılandırın


26

Apache kullanarak 80 numaralı bağlantı noktasından JBoss / TomCat'a trafik iletmek için kurduk ve yapılandırdık mod_jk.

Nginx'in karşılığı var mı? Temel olarak tüm 80 numaralı trafiğin jboss'a aktarılmasını istiyorum.


Blog gönderimi, Nginx’i Tomcat için ters proxy olarak yapılandırma konusunda kontrol edebilirsiniz . Örneğin, yalnızca oturum açmamış kullanıcılar için önbellekleme içeriği olarak birkaç ek tweaks içerdiği ve farklı dilleri yönlendirdiği için ilginç olabilir.
Vladimir Grichina

Yanıtlar:


17

Nginx için burada dokümanlar kontrol . Proxy desteği yerleşik.

Aşağıdaki örnekte kendi sitelerinde, 8080 numaralı bağlantı noktasında çalışan tek bir servet kabına belirli 80 numaralı bağlantı noktasının gönderildiğini göreceksiniz .

Birden fazla arka uç sunucu uygulaması kabı çalıştırmak istiyorsanız (yük dengeleme, ölçeklendirme vb.) , En az meşgul olan arka uç sunucusuna trafik gönderecek olan Yukarı Akış Fuarı Modülüne bakmanız gerektiğini unutmayın . Varsayılan w / nginx tarafından gönderilmez.

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

Bunu yapmanın başka bir yolu, LikeApache wiki sayfasında açıklandığı gibidir .

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;
    }
}

Kök yerine / myapp ile de test ettim ve aynı zamanda bir yere / myapp ve proxypass http: // myapp: 8080 / myapp ;

Ayrıca, bu yapılandırma her şeyi Java uygulamasına eşler; bu, Struts gibi bir MVC çerçevesi tarafından eşlenen hoş URL'lere sahip olduğunuzda faydalıdır.


2

Mod_jk kullanmak zorunda değilsiniz, mod_proxy kullanabilirsiniz, yani trafiği AJP yerine HTTP üzerinden geçirebilirsiniz. Nginx'in proxy özelliği varsa, bunun da iyi çalışması gerekir.


7
Proxy ile ilgili sorun mod_jk / fastcgi / ajp'den daha yavaş olmasıdır
Adam Gent

2

Şimdi nginx için oldukça taze bir ajp_module var . Bununla ilgili deneyimim yok, ancak oturumun yapışkanlığının ve özellikle kalıcı arka uç bağlantılarının Tomcat için oldukça yararlı olduğunu düşünüyorum. Her iki yöntem de (http proxy veya ajp proxy), uzun süren sorguları (kuyruklu yıldız) veya büyük dosya transferleri (yüklemeler) için ne yazık ki esnek değildir.

https://github.com/yaoweibin/nginx_ajp_module#readme

lighttpd BTW, FCGI, HTTP, CGIS ve AJP13 kodlamasını yapabilen genel bir proxy modülüne sahiptir. Bu daha iyi bir yaklaşım gibi gözüküyor (ama bence onu okumaktan alışılmadık uzun / büyük istek / cevap kalıpları açısından aynı sınırlamalar var).

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

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.