Questo non sembra funzionare proprio ora. Sto usando Faye con NodeJS dietro un ELB Amazon. Quando accendo HTTPS, le connessioni non possono più essere negoziate. Ho trovato una domanda senza risposta: https://forums.aws.amazon.com/message.jspa?messageID=283293. Chiunque è in grado di farlo funzionare? Ci sono dei problemi al di fuori dell'esecuzione della mia istanza di HAProxy?Come si ottiene l'ELB di Amazon con HTTPS/SSL per funzionare con Web Sockets?
risposta
Confermo, in base alle nostre prove, che la configurazione ELB su TCP/SSL, invece oh HTTP/HTTPS, rende il trucco con WebSockets. Gli svantaggi sono due:
1) Come già indicato da Arturnt, non è possibile ottenere appiccicosità.
2) Si perderà la possibilità di recuperare l'identità dei client. L'IP di origine visto dal server WebSocket sarà sempre quello ELB e, a differenza della configurazione HTTP/HTTPS, nessuna intestazione X-Forwarded-For verrà aggiunta alle richieste.
UPDATE luglio 2013: Amazon ha appena aggiunto il supporto per protocollo Proxy, che risolve il numero svantaggio 2 di cui sopra. Con il Proxy Protocol, viene aggiunta un'intestazione contenente l'IP di origine del client anche quando ELB funziona a livello TCP anziché HTTP. Tutti i dettagli: http://docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/enable-proxy-protocol.html
UPDATE agosto 2016: Amazon ha appena annunciato nuovo AWS Applicazione Load Balancer, che supporta WebSocket al livello 7 (così come HTTP/2.0 e il routing basato sul contenuto). Vedi https://aws.amazon.com/it/blogs/aws/new-aws-application-load-balancer/
Non funziona, il proxy HTTP (S) di ELB non comprende le richieste di websocket, almeno per ora, e non so quando/se è pianificato.
Non sono sicuro che HAProxy sia completamente necessario. Dovrebbe essere possibile inserire un terminatore SSL, ad es. stud/stunnel, nella stessa istanza dei server nodejs e passa in quella direzione. È quindi possibile mantenere il ELB, ma metterlo in modalità TCP.
Ovviamente c'è l'overhead SSL su ogni istanza, ma nel lungo periodo probabilmente si adatta meglio all'offload del protocollo SSL su ELB (in particolare in base ai commenti degli utenti sulle prestazioni SSL di ELB).
Spesso è più desiderabile di interrompere SSL al AWS ELB, anche se solo in modo che rinnovare il certificato è facilmente eseguita in un unico luogo. Significa anche che il codice dell'applicazione potenzialmente vulnerabile non ha accesso al certificato. Lo svantaggio, ovviamente, è che la comunicazione tra ELB e l'applicazione non è criptata, ma questo può essere mitigato con VPC e sicurezza di rete rafforzata. – jokeyrhyme
Dopo la risposta di James ho fatto un po 'più di ricerche e ho finito per andare sulla rotta TCP, non sono sicuro che ci siano degli svantaggi rispetto all'utilizzo del tunneling HTTP di ELB (considerando che non ho bisogno di appiccicosità). La cosa buona è che non è necessario fare stud/stunnel poiché ELB lo fornisce per te. messa a punto in modo definitivo ELB dove NodeJS/Faye sono in ascolto sulla porta 8000:
Secure TCP Forward (443) -> Local (8000)
TCP Forward 80 -> Local(8000)
Lo svantaggio è la fissità e la capacità del ELB di inoltrare una richiesta a un server diverso se quello corrente che sceglie restituisce un errore. –
È possibile utilizzare Application LB per supportare bene la presa di rete.Ho appena implementato questa idea sul nostro ultimo progetto, dopo implementato alcuni trucchi per ALB:
- aperta la porta 80 su tutti i relativi SG
- fanno NodeJS in esecuzione su 80
- consentono NodeJS rispondono http-80 richiesta (NodeJS volontà aggiornare richiesta HTTP al websocket nel backend)
- fanno ALB controllo target http-80 & percorso corretto da ping
- creare ascoltatori ALB:
http80->http80, https443->http80
- cre mangiato regole ascoltatore in ALB:
http80->target group, https443->target group
- abilitare HTTP vischiosità nel
Come hai configurato il controllo di integrità/percorso di ping per questo lavoro? – BrokenGlass
Ho finito per creare un endpoint separato, HTTP, solo per i controlli di integrità. Secondo [documenti] (https://docs.aws.amazon.com/elasticloadbalancing/latest/application/target-group-health-checks.html), "... i controlli di integrità non supportano WebSockets". – dskrvk
@dskrvk Dove e come è stato impostato un endpoint per il controllo dello stato? Stai eseguendo nginx per te ALB? Sono nella stessa situazione non eseguendo nginx e ora sicuro di quale file devo servire per il controllo sanitario e con che cosa dovrebbe rispondere? – jdog
- 1. SignalR con Sockets Web
- 2. Implementazione lato server Web Sockets per NodeJS
- 3. Come si ottiene Intellij IDEA 12.0 per funzionare con l'app Play Framework 2.1.0 e Scala 2.10.0?
- 4. Boost Asio e Web Sockets?
- 5. Configurazione NGINX per funzionare con Socket.IO
- 6. Perché Web Sockets non utilizza SOAP?
- 7. Configurazione Amazon Cloud per l'app Web Java EE con MySQL
- 8. Come configurare Ninject per funzionare con ServiceStack.net
- 9. Come configurare Capybara per funzionare con Poltergeist?
- 10. Come si ottiene la dirname di un file con Perl?
- 11. Utilizzo di Amazon S3 con Amazon RDS
- 12. come ottenere jquery.couch.app.js per funzionare con IE8
- 13. Come ottenere __debugInfo per funzionare con XDebug?
- 14. Come funzionano i servizi web di Amazon?
- 15. È possibile creare un'applicazione Web Amazon S3 compatibile con HIPAA?
- 16. Avvio di Robolectric per funzionare con Volley
- 17. Amazon Web Service CloudWatch metriche personalizzate con dimensioni
- 18. Come si ottiene una notifica desktop da un'app Web?
- 19. Come posso far funzionare Winston con Webpack?
- 20. Esempi di funzionamento di servizi Web Amazon
- 21. C'è qualche trucco per far funzionare il CDO VBScript con Amazon SES SMTP?
- 22. Come far funzionare Tomcat7 con JAX-RS?
- 23. Client basato su Web per Amazon S3
- 24. Come si ottiene GetCustomAttributes?
- 25. Come far funzionare il compagno di testo con NFS?
- 26. Come configurare SublimeRepl per funzionare con lo schema di pollo?
- 27. amazon s3 deleteObjects nodejs - impossibile farlo funzionare
- 28. Come ottenere Python m2Crypto per funzionare con virtualenv?
- 29. Come si ottiene Lucene (.NET) per evidenziare correttamente con i caratteri jolly?
- 30. Utilizzo di Cloudflare con Amazon ec2
È possibile utilizzare WSS con la seconda opzione? – whadar
... e c'è [un modulo per gestire il protocollo PROXY] (http://stackoverflow.com/q/17981943/201952). – josh3736
... o una [forcella] attualmente attiva (https://github.com/findhit/proxywrap) del modulo precedente. – jamix