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

8

Eu percebo 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 nginx 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 vou para o link , o conteúdo é exibido e a conexão é segura. Então 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 ao visitar o link , é exibido um erro na browser (Este site não pode ser encontrado / myexample.com recusou-se a conectar-se. ERR_CONNECTION_REFUSED)

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

Devo observar que posso usar uma porta não padrão e, em seguida, digitar explicitamente essa porta no URL, por exemplo, link . Mas eu não quero fazer isso. O que eu quero é que um usuário possa digitar myexample.com em qualquer navegador e redirecionar o nginx para a conexão segura automaticamente.

Novamente, não tenho nenhum problema quando uso a porta SSL padrão 443.

Editar: estou usando o nginx / 1.6.2 no debian / jessie

    
por GojiraDeMonstah 23.01.2017 / 22:28

3 respostas

15

Para oferecer suporte à digitação do link "no seu navegador, e , o controle da nginx config escutando na porta 9443, você precisará de um nginx config adicional que ainda escuta na porta 443, já que essa é a porta IP à qual o navegador se conecta .

Assim:

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, já que o certificado é geralmente vinculado ao nome do host DNS, mas não necessariamente à porta.

Espero que isso ajude!

    
por 23.01.2017 / 22:43
0

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

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

    
por 23.01.2017 / 22:45
-1

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

    
por 23.01.2017 / 22:40

Tags