Configura nginx per jboss / tomcat


26

Per passare il traffico a JBoss / TomCat sulla porta 80 usando Apache, abbiamo usato per installare e configurare mod_jk.

Esiste un equivalente per nginx? Fondamentalmente vuole che tutto il traffico della porta 80 venga passato a jboss.


Puoi controllare il mio post sul blog sulla configurazione di Nginx come proxy inverso per Tomcat . Potrebbe essere interessante per te, ad esempio include alcune ulteriori modifiche come memorizzazione nella cache dei contenuti solo per gli utenti non registrati e il reindirizzamento per lingue diverse.
Vladimir Grichina,

Risposte:


17

Per nginx controlla i loro documenti qui . Il supporto proxy è integrato.

Nell'esempio seguente dal loro sito, vedrai che il traffico specifico della porta 80 viene inviato a un singolo contenitore servlet in esecuzione sulla porta 8080.

Si noti che se si desidera eseguire più contenitori servlet back-end (per bilanciamento del carico, ridimensionamento, ecc.), Si dovrebbe guardare il modulo fiera upstream che invierà il traffico al server back-end meno occupato. Non viene spedito da Defaul con 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

Un altro modo per farlo come descritto nella pagina wiki di 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;
    }
}

L'ho provato anche con / myapp anziché root e funziona anche, mettendo location / myapp e proxypass http: // myapp: 8080 / myapp ;

Inoltre, questa configurazione associa tutto all'applicazione Java, che è utile quando si hanno URL carini che sono mappati da un framework MVC come Struts.


2

Non è necessario utilizzare mod_jk, è possibile utilizzare mod_proxy, ovvero passare il traffico tramite HTTP anziché AJP. Se nginx ha l'abilità proxy, dovrebbe funzionare altrettanto bene.


7
Il problema con un proxy è che è più lento di mod_jk / fastcgi / ajp
Adam Gent,

2

Ora c'è un ajp_module abbastanza fresco per nginx . Non ho esperienza con esso, ma penso che la viscosità della sessione e soprattutto le connessioni di backend persistenti siano abbastanza utili per Tomcat. Entrambi i metodi (proxy http o ajp proxy) sono purtroppo inflessibili per interrogazioni solitarie (comete) o trasferimenti di file di grandi dimensioni (upload).

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

lighttpd BTW ha un modulo proxy generale in grado di gestire la codifica FCGI, HTTP, CGIS e AJP13. Questo sembra un approccio migliore (ma penso che dalla lettura abbia gli stessi limiti per quanto riguarda i modelli atipici di richiesta / risposta lunghi / grandi).

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

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.