Então, embora não seja o ideal, atualmente tenho um servidor web rodando o Ubuntu 14.04 atrás de um roteador Linksys. No roteador, redirecionei as portas 22, 80 e 435 para SSH, HTTP e HTTPS, respectivamente.
Agora, executando um proxy reverso nginx muito simples para rotear a porta 80 para um script de nó muito simples na porta local 3001, consigo abrir um navegador da web de qualquer lugar na rede local e acessar o ip público do servidor porta 80 e obter a resposta correta.
Assim que eu tento conectar ao mesmo ip público no sinal do meu iPhone (método mais fácil para eu usar um ip externo), recebo um erro dizendo que a "conexão de rede foi perdida". Eu tentei desativar o ufw, mas este é o meu status atual do ufw:
To Action From
-- ------ ----
22 ALLOW Anywhere
80/tcp ALLOW Anywhere
80 ALLOW Anywhere
Nginx Full ALLOW Anywhere
22 (v6) ALLOW Anywhere (v6)
80/tcp (v6) ALLOW Anywhere (v6)
80 (v6) ALLOW Anywhere (v6)
Nginx Full (v6) ALLOW Anywhere (v6)
Recentemente, ativei o perfil Nginx Full
na esperança de que isso possa ajudar, mas não ajudou.
A execução de tcpdump -i em1 port 80 -s 0 -w capture.cap
, a tentativa de conexão no meu iphone e a execução do tcpick -C -yP -r capture.cap
fornecem os seguintes resultados:
Timeout for connections is 600
tcpick: reading from capture.cap
1 SYN-SENT IPHONE_IP:12649 > LOCAL_IP:http
1 SYN-RECEIVED IPHONE_IP:12649 > LOCAL_IP:http
2 SYN-SENT IPHONE_IP:12649 > LOCAL_IP:http
3 SYN-SENT IPHONE_IP:12649 > LOCAL_IP:http
4 SYN-SENT IPHONE_IP:21998 > LOCAL_IP:http
4 SYN-RECEIVED IPHONE_IP:21998 > LOCAL_IP:http
5 SYN-SENT IPHONE_IP:21998 > LOCAL_IP:http
6 SYN-SENT IPHONE_IP:21998 > LOCAL_IP:http
7 SYN-SENT IPHONE_IP:9256 > LOCAL_IP:http
7 SYN-RECEIVED IPHONE_IP:9256 > LOCAL_IP:http
8 SYN-SENT IPHONE_IP:9256 > LOCAL_IP:http
9 SYN-SENT IPHONE_IP:9256 > LOCAL_IP:http
tcpick: done reading from capture.cap
e aqui está minha configuração básica do nginx:
server {
listen 80;
server_name mgmcdermott.com;
location / {
proxy_pass http://127.0.0.1:3001;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_read_timeout 180s;
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
Meu palpite está me dizendo isso porque eu posso acessar o site localmente, então deve ser meu roteador bloqueando solicitações externas, no entanto, eu sou capaz de SSH remotamente através do roteador e tentei desativar todos os firewalls sem sorte.
Eu tenho conhecimento em programação e conhecimento básico em configurações do lado do servidor, no entanto eu sou novo em fazer uma nova instalação com Ubuntu e nginx atrás de um roteador.
Estou disposto a limpar completamente o Ubuntu e reinstalá-lo se necessário
Concluirei mencionando que sou um pouco inexperiente quando se trata de postar perguntas sobre o StackExchange. Eu já li milhares deles, mas raramente encontrei algo para postar que ainda não está aqui, então, por favor, descubra comigo se eu perdi algo.
Obrigado!
Editar:
Usando o comando traceroute, ele mostra um tempo limite de rede com um! X significando "comunicação administrativamente proibida":
1-4. Pings across work network
5. * * *
6. * * *
7. * * *
...
19. * * * LAST_PINGED_IP_AT_STEP_4 1.491 ms !X
...
Eu vejo que o! X aparece, o que significa comunicação administrativamente proibida , não tenho certeza se isso ajuda.
Ainda mais informações ...
$ sudo netstat -tclp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 localhost:mysql *:* LISTEN 1339/mysqld
tcp 0 0 *:http *:* LISTEN 1301/nginx
tcp 0 0 *:ssh *:* LISTEN 1262/sshd
tcp6 0 0 [::]:ssh [::]:* LISTEN 1262/sshd
tcp6 0 0 [::]:3001 [::]:* LISTEN 1395/node