nginx aceita solicitações HTTP e HTTPS em duas portas diferentes

2

Eu tenho uma configuração de servidor nginx (dois arquivos de configuração) com dois servidores web gunicorn instalados e em execução. Um gunicorn é produção e o outro é encenação.

Eu quero que o nginx atenda solicitações http para xyz.com, bem como solicitações https para xyz.com para o servidor de gunicorn de produção @ 127.0.0.1:8000.

Eu consegui isso com:

server {
   listen 80;
   server_name xyz.com;
   return 301 https://$http_host$request_uri;
}

server {
   listen 443 ssl;
   server xyz.com;
   ..... <<< ssl stuff
  location /{
      .... proxy_stuff
      proxy_pass http://127.0.0.1:8000;
  }
}

Também quero que o tráfego http para xyz.com:8080 e o tráfego https para xyz.com:8080 atinjam o servidor de teste @ 127.0.0.1:8081. Fui capaz de obter o tráfego de https para xyz.com:8080, trabalhando da seguinte maneira:

server {
   listen 8080 ssl;
   server_name xyz.com;
   ...... << ssl stuff
   location / {
      ...... << proxy stuff
      proxy_pass http://127.0.0.1:8081;
   }
}

Mas não consigo encontrar uma maneira de redirecionar o tráfego http em xyz.com:8080 para o tráfego https em xyz.com:8080. Eu tentei o mesmo redirecionamento que eu fiz com a porta 80, mas não foram bem sucedidos.

Poderia usar alguma direção.

    
por bazfire 19.01.2016 / 22:44

1 resposta

6

Com base no que você disse, quer ouvir http e https na porta 8080, o que não acredito ser possível. Configure blocos de servidores diferentes para portas diferentes, com o bloco de localização dentro de você pode ter o mesmo proxy_pass para passar para onde quiser.

Este é provavelmente o mais próximo que você pode chegar do que você disse, que está escutando em 8080 http, 8081 https e encaminhando de http para https. A reescrita pode não estar exatamente certa, mas você entendeu.

server {
  listen 8080; # HTTP
  server_name example.com;
  rewrite ^ https://example.com:8081$request_uri? redirect;
  # rewrite ^ https://example.com:8081 redirect; # Alternate rewrite
}

server {
  listen 8081 ssl;
  server_name example.com;
  ...... << ssl stuff
  location / {
    ...... << proxy stuff
    proxy_pass http://127.0.0.1:8081;
  }
}
    
por 19.01.2016 / 23:05

Tags