AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / server / Perguntas / 1167458
Accepted
Alejandro
Alejandro
Asked: 2024-11-06 04:55:54 +0800 CST2024-11-06 04:55:54 +0800 CST 2024-11-06 04:55:54 +0800 CST

Nginx não está funcionando fora da rede local

  • 772

Tenho um servidor Node.js com Express que serve uma rede https. O servidor está executando o Windows 10. Configurei um servidor DNS sem IP com certificados SSL. A rede está na porta 3000 e quero iniciar um proxy reverso com o Nginx para acessá-la sem precisar especificar a porta, apenas o nome do domínio. O problema é que o Nginx está funcionando para máquinas da rede local, mas não para máquinas externas. Esta é a configuração para o Nginx:

worker_processes 1;
error_log  logs/error.log;
error_log  logs/error.log  notice;
error_log  logs/error.log  info;
events {
    worker_connections 1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;
    
    sendfile        on;
    keepalive_timeout  65;

    server {
        listen 80;
        server_name servidordelacruz.dynns.com;

        location / {
            return 301 https://$host$request_uri;
        }
    }

    server {
        listen 443 ssl;
        server_name xxxxxx.dynns.com;

        ssl_certificate      route_to\noip_fullchain_cert.pem; 
        ssl_certificate_key  route_to\cert.key;

        ssl_protocols TLSv1.2 TLSv1.3;
        ssl_ciphers HIGH:!aNULL:!MD5;

        location / {
            proxy_pass https://localhost:3000;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
        }
    }
}

Tenho as portas 80 e 443 abertas no roteador para o servidor e, apenas para teste, o firewall do Windows está completamente desabilitado. Também confirmei que o ddns está funcionando, pois também tenho um servidor de Minecraft acessível. No arquivo access.log, também posso ver que o telefone alcança o servidor:

X.X.X.X - - [05/Nov/2024:20:52:40 +0100] "GET / HTTP/1.1" 301 169 "-" "Mozilla/5.0 (Android 15; Mobile; rv:132.0) Gecko/132.0 Firefox/132.0"

Por fim, no arquivo de log errors. vejo esse erro constantemente:

2024/11/05 21:05:46 [info] 5276#10252: *943 SSL_do_handshake() failed (SSL: error:0A000412:SSL routines::sslv3 alert bad certificate:SSL alert number 42) while SSL handshaking, client: X.X.X.X, server: 0.0.0.0:443

O IP do cliente é meu IP público. Li que talvez não seja importante.

nginx
  • 1 1 respostas
  • 165 Views

1 respostas

  • Voted
  1. Best Answer
    Alejandro
    2025-04-09T00:09:02+08:002025-04-09T00:09:02+08:00

    Encontrei a resposta alguns meses atrás, mas esqueci de postá-la aqui.

    O problema eram as portas, mesmo parecendo que estavam abertas, mas não estavam. Então, obviamente, se as portas não estiverem abertas, o nginx não funciona. Então, tive que encontrar uma maneira de executar o nginx em uma porta diferente e, para isso, precisei mudar algumas coisas.

    Minha solução alternativa foi usar o Cloudflare em vez do No-IP. Comprei um domínio lá (7€, bem barato) e configurei alguns registros A e um ddns com o Favonia Cloudflare-ddns.

    Com isso, fiquei como antes com o no-ip, mas tenho o Cloudflare, que tem muito mais opções. Configurei a segurança, o cache e algumas coisas que o no-ip não tinha e, finalmente, comecei com as portas.

    O que fiz foi criar uma Regra de Origem com uma expressão de filtro personalizada para os nomes de host que precisavam ser proxy, como plex.example.com, e definir a porta de destino como uma porta que eu pudesse abrir no meu roteador e configurar o nginx assim:

    http {
        include mime.types;
        default_type application/octet-stream;
        sendfile on;
        keepalive_timeout 65;
    
        server {
            listen AVAILABLE_PORT ssl;
            http2 on;
            server_name plex.example.com;
            ssl_certificate ./cert.pem;
            ssl_certificate_key ./cert.key;
            ssl_protocols TLSv1.2 TLSv1.3;
            ssl_ciphers HIGH:!aNULL:!MD5;
    
            add_header <Headers rules>
    
            location / {
                proxy_pass https://127.0.0.1:3000;
                proxy_http_version 1.1;
                proxy_set_header Host $host;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header X-Forwarded-Proto $scheme;
                proxy_set_header Connection "";
                proxy_ssl_server_name on;
                proxy_connect_timeout 10s;
                proxy_send_timeout 30s;
                proxy_read_timeout 30s;
            }
        }
    }
    

    E com isso consegui colocar minha página no ar!

    • 0

relate perguntas

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Você pode passar usuário/passar para autenticação básica HTTP em parâmetros de URL?

    • 5 respostas
  • Marko Smith

    Ping uma porta específica

    • 18 respostas
  • Marko Smith

    Verifique se a porta está aberta ou fechada em um servidor Linux?

    • 7 respostas
  • Marko Smith

    Como automatizar o login SSH com senha?

    • 10 respostas
  • Marko Smith

    Como posso dizer ao Git para Windows onde encontrar minha chave RSA privada?

    • 30 respostas
  • Marko Smith

    Qual é o nome de usuário/senha de superusuário padrão para postgres após uma nova instalação?

    • 5 respostas
  • Marko Smith

    Qual porta o SFTP usa?

    • 6 respostas
  • Marko Smith

    Linha de comando para listar usuários em um grupo do Windows Active Directory?

    • 9 respostas
  • Marko Smith

    O que é um arquivo Pem e como ele difere de outros formatos de arquivo de chave gerada pelo OpenSSL?

    • 3 respostas
  • Marko Smith

    Como determinar se uma variável bash está vazia?

    • 15 respostas
  • Martin Hope
    Davie Ping uma porta específica 2009-10-09 01:57:50 +0800 CST
  • Martin Hope
    kernel O scp pode copiar diretórios recursivamente? 2011-04-29 20:24:45 +0800 CST
  • Martin Hope
    Robert ssh retorna "Proprietário incorreto ou permissões em ~/.ssh/config" 2011-03-30 10:15:48 +0800 CST
  • Martin Hope
    Eonil Como automatizar o login SSH com senha? 2011-03-02 03:07:12 +0800 CST
  • Martin Hope
    gunwin Como lidar com um servidor comprometido? 2011-01-03 13:31:27 +0800 CST
  • Martin Hope
    Tom Feiner Como posso classificar a saída du -h por tamanho 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich O que é um arquivo Pem e como ele difere de outros formatos de arquivo de chave gerada pelo OpenSSL? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent Como determinar se uma variável bash está vazia? 2009-05-13 09:54:48 +0800 CST

Hot tag

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve