Shinyproxy: proxy reverso nginx não funciona

Criado em 15 jan. 2021  ·  7Comentários  ·  Fonte: openanalytics/shinyproxy

Estou tentando implantar um aplicativo na Internet por meio do proxy reverso nginx. Meu aplicativo está completamente em contêineres e meu arquivo de configuração nginx em / etc / nginx / sites-available corresponde ao exemplo Brightproxy aqui: https://www.shinyproxy.io/security/

servidor {
escute 80;
server_name shineproxy.yourdomain.com;
reescrever ^ (. *) https: // $ server_name $ 1 permanente;
}

servidor {
escute 443;
server_name shineproxy.yourdomain.com;
access_log /var/log/nginx/shinyproxy.access.log;
error_log /var/log/nginx/shinyproxy.error.log error;

ssl on;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

ssl_certificate /etc/ssl/certs/yourdomain.com.crt;
ssl_certificate_key /etc/ssl/private/yourdomain.com.key;

localização / {
proxy_pass http://127.0.0.1 : 8080 /;

   proxy_http_version 1.1;
   proxy_set_header Upgrade $http_upgrade;
   proxy_set_header Connection "upgrade";
   proxy_read_timeout 600s;

   proxy_redirect    off;
   proxy_set_header  Host             $http_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;
 }

}

Meu domínio tem certificação https e se eu visitar meu domínio, vejo a mensagem "Bem-vindo ao nginx!" tela. No entanto, depois de iniciar meu aplicativo para ouvir na porta 8080 com o comando:
docker run -d -v /var/run/docker.sock:/var/run/docker.sock --net wind_net -p 8080:8080 wind_container
se eu visitar meu domínio, ainda vejo a mensagem "Bem-vindo ao nginx!" tela. O Nginx não está transferindo meu domínio para meu aplicativo brilhante. Alguma idéia de por que o proxy reverso não está funcionando? Eu iniciei meu aplicativo brilhante em contêiner na porta errada?

question

Comentários muito úteis

Eu resolvi o problema. O Nginx não estava exibindo o aplicativo Brightproxy porque eu negligenciei o link do meu arquivo de configuração nginx em / etc / nginx / sites-available / para / etc / nginx / sites-enabled. Depois de vincular minha configuração em ambos os diretórios com o comando ls -s e remover o arquivo de configuração padrão de / etc / nginx / sites-enabled, o aplicativo Glossproxy foi exibido em meu domínio.

Todos 7 comentários

A diretiva proxy_pass do mecanismo reverso está roteando para a rede local da máquina host (127.0.0.1). Ao colocar seus aplicativos em contêineres, você está mudando da rede localhost para a rede do ecossistema docker. Assim, como você inicia e publica o seu Glossyproxy para hospedar assuntos. Verifique este artigo sobre rede no docker

Obrigado pela ajuda. Eu ainda não encontrei uma solução depois de ler o artigo e resolver mais problemas. Preciso alterar a parte 127.0.0.1 do passe de proxy? Ou preciso ativar meu contêiner do docker para ouvir em outro lugar que não seja 8080: 8080?

Como você inicia o seu brightproxy?

Olá @ lucius-verus-fan

Só para ter certeza, com o seguinte comando você está tentando iniciar o ShinyProxy, certo?

 docker run -d -v /var/run/docker.sock:/var/run/docker.sock --net wind_net -p 8080:8080 wind_container

Portanto, o wind_container é um contêiner de cliente que você criou contendo ShinyProxy?

Nesse caso, não acho que o problema tenha a ver com a rede Docker, a parte -p 8080:8080 do comando garante que a porta 8080 seja encaminhada para sua máquina local, independentemente de em qual rede docker o contêiner está sendo executado.

Em vez disso, acredito que o erro está na configuração do nginx, você deve alterar estas linhas para corresponder à sua configuração:

server_name shinyproxy.yourdomain.com;
rewrite ^(.*) https://$server_name$1 permanent;
# a few lines lower
server_name shinyproxy.yourdomain.com;

Você deve especificar o nome de domínio correto do seu servidor lá. Agora você está dizendo ao nginx para processar qualquer solicitação em shinyproxy.yourdomain.com como uma solicitação para ShinyProxy, qualquer outra solicitação resultará em um 404. Assim, uma vez que você não o acessa em shinyproxy.yourdomain.com nginx fornecerá você um 404.

Olá @LEDfan e @jaysnm

O comando que estou usando para iniciar o ShinyProxy é:
docker run -d -v /var/run/docker.sock:/var/run/docker.sock --net wind_net -p 8080:8080 wind_container

A configuração do nginx que anexei em meu primeiro comentário não é a configuração do nginx que estou usando, que é o exemplo dado no site Brightproxy. Vou anexar o arquivo de configuração nginx que estou usando abaixo.

server {
  listen                80;
  server_name           windts.app www.windts.app;
  rewrite     ^(.*)     https://$server_name$1 permanent;
}

server {
  listen                443 ssl;
  server_name           windts.app www.windts.app;
  access_log            /var/log/nginx/shinyproxy.access.log;
  error_log             /var/log/nginx/shinyproxy.error.log error;

  ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

  ssl_certificate       /etc/ssl/certs/windts.app.crt;
  ssl_certificate_key   /etc/ssl/private/windts.app.key;

   location / {
       proxy_pass          http://127.0.0.1:8080/;

       proxy_http_version 1.1;
       proxy_set_header Upgrade $http_upgrade;
       proxy_set_header Connection "upgrade";
       proxy_read_timeout 600s;

       proxy_redirect    off;
       proxy_set_header  Host             $http_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;
     }

}

Ao visitar o domínio windts.app ou www.windts.app, você é direcionado para a página de boas-vindas do Nginx em vez de ser passado para o aplicativo shineproxy. O aplicativo é executado corretamente localmente, bem como em um servidor remoto. É simplesmente uma questão de conectar o domínio ao contêiner que executa o aplicativo Glossproxy.

Eu resolvi o problema. O Nginx não estava exibindo o aplicativo Brightproxy porque eu negligenciei o link do meu arquivo de configuração nginx em / etc / nginx / sites-available / para / etc / nginx / sites-enabled. Depois de vincular minha configuração em ambos os diretórios com o comando ls -s e remover o arquivo de configuração padrão de / etc / nginx / sites-enabled, o aplicativo Glossproxy foi exibido em meu domínio.

Para o registro, é ln -s [sic], mas obrigado por compartilhar o feedback e bom que seu problema foi resolvido!

Esta página foi útil?
0 / 5 - 0 avaliações