È buona prassi consentire a Node / Go / ... di agire come un server web frontend?

1

Sono abituato a scrivere contenuti web in PHP e lasciare che Apache o nginx gestiscano l'effettiva gestione HTTP e caricino il mio codice con qualsiasi mezzo (mod_php, fcgi, fpm, ...). Ho l'impressione che questa sia una buona cosa, dato che ci sono stati anni e anni di hacking, patch e miglioramenti di questi web server, quindi sono "testati in battaglia".

Ora, con "nuovi arrivati" come Node o Go, mi trovo di fronte alla domanda su quale sia il modo migliore per scrivere applicazioni web di produzione reali. Sono esitante nel lasciare che Node ascolti sulla porta 80, poiché temo che il suo meccanismo di gestione HTTP non sia così testato come quello di Apache / nginx (sto pensando a client malvagi, alluvioni, attacchi DoS, ecc.). Il mio amministratore ha "confermato" questo lasciando solo che le app del Nodo vengano eseguite dietro un nginx del proxy inverso.

Questa paura è razionale? O è del tutto normale saltare un server web dedicato e gestire l'intera richiesta nella mia app (incluso TLS?)?

    
posta xrstf 28.02.2015 - 11:49
fonte

3 risposte

1

Il codice ben collaudato aiuta a ridurre il rischio , ma anche PHP continua a rilasciare patch per risolvere i problemi di sicurezza.

Il problema non è con "nuovi arrivati" ma con protezioni e controlli appropriati su qualsiasi tipo di servizio che esponi. PHP / Apache / etc. comportarsi (e fallire) in modi prevedibili, ma possiamo prevedere i loro comportamenti perché abbiamo abbiamo esperienza con loro e sappiamo come rispondere.

Sia che tu stia utilizzando la base di codice più vecchia e mantenuta del pianeta, sia che tu stia producendo un prodotto personalizzato di un weekend "hack-a-thon", devi comunque assicurarti di avere tutte le protezioni appropriate. Da quella prospettiva, la "paura" del tuo amministratore è perfettamente razionale: aggiungi protezioni extra intorno a ciò che non comprendi pienamente, anche se questo significa che finisci per essere pesante. Quindi, puoi mettere a punto, perfezionare e regolare i controlli a un livello appropriato.

È compito del tuo amministratore proteggere il server e l'infrastruttura in modo che tutti i servizi possano fornire un valore. È il tuo lavoro (presumo) fornire un servizio prezioso agli stakeholder e ai clienti. Entrambi avete bisogno di lavorare insieme in modo che tutti possano essere serviti.

    
risposta data 28.02.2015 - 20:11
fonte
0

Non utilizzerei il nodo per la produzione, ma questo è un argomento diverso.

L'uso di ngnix o Apache come proxy inverso fornirà poco o nulla a che fare con la sicurezza del vantaggio, dato che quasi tutto viene passato in modo trasparente

    
risposta data 01.03.2015 - 01:02
fonte
0

Non userei Apache - non otterrai molti vantaggi lì.

nginx può essere usato insieme al nodo, poiché servirà i file statici in modo molto più efficiente rispetto al nodo.

Haproxy di fronte al nodo può darti un migliore bilanciamento del carico, limitando la velocità, di quanto puoi ottenere con il nodo.

Puoi anche scaricare SSL (e SPDY / HTTPv2) in strumenti dedicati (stunnel, perno) o usare i moduli in haproxy o nginx.

Nessuna di queste è per motivi di sicurezza. Solo usando più strumenti che sono individualmente bravi in alcune cose per costruire un sistema che sia buono in ogni cosa.

    
risposta data 01.03.2015 - 12:27
fonte

Leggi altre domande sui tag