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.
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.
Risposte:
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;
}
}
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.
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.
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).