2013-10-12 16 views
9

sto cercando di utilizzare nodejs e socket.io per fornire una webapp, che utilizzano websocket sulla porta 3000.apertura porta 3000 EC2 di Amazon web services

Ho aperto la porta 3000 sulla mia istanza EC2 nella mia console di gestione aggiungendo la regola TCP in entrata al gruppo di sicurezza pertinente, tuttavia non riesco ancora ad accedervi tramite DNS pubblici sul mio browser.

sudo netstat -tulpn non lo mostra come porta aperta.

Cosa mi manca? C'è qualche servizio che devo riavviare o una riga di comando che devo spingere per farlo funzionare?

Grazie

+0

Si è mai risolto? Ho cercato su Internet senza alcun risultato. Ho finito per utilizzare la porta 8080 nella mia app nodejs invece di 3000, che ha risolto i miei problemi. Ma perché nel mondo la porta 3000 non funziona? – tbogatchev

risposta

1

immagino che hai fatto le modifiche utilizzando la console di gestione AWS. Ma questo significa solo che il sistema di Amazon consentirà il messaggio sulla porta 3000 attraverso i propri sistemi di sicurezza al proprio server.

Il server EC2 (non si indica se è Windows o Linux) può disporre di un proprio sistema di firewall che è necessario aprire la porta 3000. Dovrai consultare la documentazione del tuo server su quali impostazioni devi modificare.

Suppongo che tu abbia provato ad aprire un browser sulla tua istanza EC2 e puoi accedere alla webapp da lì.

Inoltre, pensando lateralmente, se non ci sono altri server Web in esecuzione sul tuo server EC2 perché non modificare la tua app node.js per utilizzare la porta 80?

9

sudo netstat -tulpn non lo mostra come porta aperta.

Il comando netstat mostrerà quali sono tutte le porte che vengono ascoltate da "alcuni" processi. Quindi, in questo caso, come lei ha detto, Sembra che tu applicazione non è in ascolto sulla porta 3000.

In primo luogo, fissare l'applicazione e assicurarsi che sia in ascolto sulla porta 3000.

Inoltre, netstat ha nulla a che fare con se una porta è aperta/chiusa dal punto di vista del firewall. Ti dirà se una determinata porta è in modalità LISTENING con un certo processo.

procedere come segue:

  1. assicurarsi che l'applicazione è in ascolto sulla porta 3000: netstat -anp | grep 3000 anche telnet 127.0.0.1 3000
  2. Quindi assicurarsi che il firewall locale è configurato per consentire l'accesso in entrata alla porta 3000 o Disattiva firewall locale per eseguire un test rapido (service iptables stop). per Linux, di solito è iptables
  3. Consentire l'accesso in ingresso alla porta 3000 nel gruppo di sicurezza AWS.

Si prega di seguire sopra 3 punti e facci sapere se si sta ancora affrontando lo stesso problema.

1

avuto problemi simili, ma stavo usando socketio con SSL

var https = require('https').Server({ 
    key: fs.readFileSync(path.join(__dirname + '../) + 'ssl.key', 'utf8'), 
    cert: fs.readFileSync(path.join(__dirname + '../') + 'ssl.crt', 'utf8') 
}, app); 

Ma le chiavi erano sbagliate, quindi, anche se la mia sicurezza AWS è stato fatto, iptables chiaro e nginx che forniscono con file del client js, il richiesta tenuta chiusa. Quindi in Firefox ho ottenuto net :: ERR_CONNECTION_CLOSED e finalmente ho capito che potrebbe essere l'errore SSL.

+0

Questo lo ha risolto per me. – david

0

oltre a tutti i passaggi precedenti, verificare se è stato impostato ufw (firewall non complicato).

per verificare se si dispone di esecuzione ufw fare:

sudo ufw status 

se è in esecuzione, per consentire la porta 3000 è sufficiente fare il comando

sudo ufw allow 3000 

questo risolto il problema per me. Ho dimenticato di aver installato ufw qualche tempo fa e di recente ho iniziato a usare di nuovo l'istanza di aws.