Como executar o nginx SSL na porta não padrão

15

Sei que isso parece uma duplicata de pelo menos algumas outras perguntas, mas eu as li várias vezes e ainda estou fazendo algo errado.

A seguir, estão os conteúdos do meu arquivo de configuração nexx myexample.com, localizado em /etc/nginx/sites-available.

server {

  listen       443 ssl;
  listen       [::]:443 ssl;

  server_name myexample.com www.myexample.com;
  add_header Strict-Transport-Security "max-age=31536000; includeSubDomains";
  ssl_certificate /etc/letsencrypt/live/myexample.com/fullchain.pem;
  ssl_certificate_key /etc/letsencrypt/live/myexample.com/privkey.pem;

  #Configures the publicly served root directory
  #Configures the index file to be served
  root /var/www/myexample.com;
      index index.html index.htm;

}

Funciona quando eu vou para https://myexample.com o conteúdo é veiculado e a conexão é segura. Portanto, essa configuração parece ser boa.

Agora, se eu alterar a porta ssl para 9443 e recarregar a configuração do nginx, a configuração será recarregada sem erros, mas visitar https://myexample.com mostra um erro no navegador (este site não pode ser acessado / myexample.com recusou-se a ERR_CONNECTION_REFUSED)

Tentei sugestões e documentação aqui , aqui e aqui (entre outros), mas sempre recebo o erro ERR_CONNECTION_REFUSED.

Devo observar que posso usar uma porta não padrão e digitar explicitamente essa porta na URL, por exemplo, https://myexample.com:9443 . Mas eu não quero fazer isso. O que eu quero é que um usuário possa digitar myexample.com em qualquer navegador e ter o nginx redirecionado para a conexão segura automaticamente.

Novamente, não tenho nenhum problema ao usar a porta SSL 443 padrão.

Edit: Estou usando o nginx / 1.6.2 no debian / jessie

GojiraDeMonstah
fonte
1
você mencionou que "Devo observar que posso usar uma porta não padrão e digitar explicitamente essa porta na URL, por exemplo, myexample.com:9443 ". Pode me explicar como você foi capaz de fazer isso porque eu quero acessar meu site usando smth como " myexample.com:9443 " com SSL incluída
Ghassan Zein

Respostas:

22

Para oferecer suporte à digitação " https://myexample.com " no seu navegador e ao ser tratado pela nginxconfiguração que está ouvindo na porta 9443, você precisará de uma nginxconfiguração adicional que ainda escute na porta 443, pois essa é a porta IP a ser acessada. ao qual o navegador se conecta .

Portanto:

server {
  listen 443 ssl;
  listen [::]:443 ssl;

  server_name myexample.com www.myexample.com;
  ssl_certificate /etc/letsencrypt/live/myexample.com/fullchain.pem;
  ssl_certificate_key /etc/letsencrypt/live/myexample.com/privkey.pem;

  # Redirect the browser to our port 9443 config
  return 301 $scheme://myexample.com:9443$request_uri;
}

server {
  listen 9443 ssl;
  listen [::]:9443 ssl;

  server_name myexample.com www.myexample.com;
  ssl_certificate /etc/letsencrypt/live/myexample.com/fullchain.pem;
  ssl_certificate_key /etc/letsencrypt/live/myexample.com/privkey.pem;
  add_header Strict-Transport-Security "max-age=31536000; includeSubDomains";

  #Configures the publicly served root directory
  #Configures the index file to be served
  root /var/www/myexample.com;
  index index.html index.htm;
}

Observe que o mesmo certificado / chave é necessário para ambas as seções, pois o certificado geralmente está vinculado ao nome do host DNS, mas não necessariamente à porta.

Espero que isto ajude!

Castaglia
fonte
Esta é a resposta mais completa, mas o que eu acho que você está me dizendo é que, para redirecionar para uma conexão segura automaticamente, o nginx ainda precisa estar vinculado à porta 443. É esse o caso? Esse é o problema :-( tenho outro processo vinculado a essa porta.
GojiraDeMonstah
Nginx é um proxy reverso. Você pode ouvir 443 e passar solicitações para o aplicativo apropriado.
Tim
Tim - você está correto. Eu provavelmente fiz uma pergunta realmente idiota, mas esperava que houvesse uma maneira de "magicamente" alterar a porta SSL.
GojiraDeMonstah 23/01
@GojiraDeMonstah Se você não quiser usar a porta 443, coloque o número da porta escolhida no URL. Isso é tudo.
Michael Hampton
O "ssl" foi bastante importante. Eu tinha o default_server antes e lutei com ele por algum tempo.
swateek
0

Quando você digita https://example.com , o padrão para o esquema https: // é conectar-se à porta 443. No seu caso, você moveu o servidor para que ele agora escute na porta 9443. A conexão é recusada mensagem por causa disso - nada está escutando na porta 443.

Você precisará providenciar para que algo escute na porta 443 que redirecione as conexões para a porta 9443 ou use uma porta como parte da URL.

user9517
fonte
-1

se você alterar a porta para uma não padrão como 9443, precisará adicionar um redirecionamento de 443 para 9443. Defina nginx para reverter o proxy para essa porta.

Kitsufan
fonte