Perché non dovrei servire il mio webapp Java direttamente con Tomcat?

Ho sentito diverse volte che non si dovrebbe servire una webapp Java direttamente al mondo esterno dal server Tomcat in cui è in esecuzione. Piuttosto, si dovrebbe avere un server web regolare tra di loro – ad esempio Apache. Perchè è questo?

  • Velocità di caricamento del sito in tutto il mondo
  • Come consentire a IP specifici un URL (non directory!) In Nginx
  • Quando dovresti usare e non utilizzare Etags?
  • Come impostare un dominio che non utilizza prefisso www su Azure / EC2
  • Sito Web interno e configuration DNS
  • Come meglio difendere contro un attacco DOS "slowloris" contro un server web Apache?
  • Perché non ci dovrebbero essere troppi file in una directory che serve solo le richieste web statiche?
  • È opportuno inserire le applicazioni su un server secondario di Active Directory? Quali trappole?
  • 3 Solutions collect form web for “Perché non dovrei servire il mio webapp Java direttamente con Tomcat?”

    Avendo appena fatto questa domanda del mio collega il web-dev recentemente … ha detto che Tomcat funziona molto più efficacemente quando solo una singola sorgente (il web-server) lo sta colpendo. Sarà scalata molto più lontano. Inoltre, i server web reali sono molto più facili da configurare per fare cose strane come la riscrittura di URL (cosa molto comune da fare, giudicando da tutte le domande mod_rewrite che stiamo arrivando qui su SF), il controllo degli accessi e tutto ciò che è SSL che non è così semplice come uno-cert / one-site.

    Non so se questa risposta sia specifica per Java e Tomcat, ma nel nostro model di sicurezza non serviamo nulla direttamente a Internet – abbiamo Apache in una DMZ che eseguono ReverseProxy a tutti i nostri server di applicazioni, in un DMZ separato (e quelli collegati ai nostri server DB in un altro DMZ).

    Oltre alla sicurezza, questo consente di eseguire reindirizzamenti, offload di SSL e tutte le altre funzionalità che Apache può fare. Non so se Tomcat abbia tutte queste caratteristiche.

    Lo scopo principale utilizzato di solito per un server Apache che fronteggia il Tomcat è quello di scaricare i contenuti statici come immagini, HTML, JS, file CSS al server Web Apache. Solo le richieste dinamiche vengono trasmesse al Tomcat, riducendo così il traffico esp. se attraverso un firewall.

    Guarda l'elenco completo al Wiki ufficiale. Perché dovrei integrare Apache con Tomcat? (o no) che spiega le performance di sicurezza, clustering e velocità, tuttavia con la nuova performance Tomcat 6 non è molto di un problema come prima.

    Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.