Como posso ativar o nginx em nixos somente para host local?

1

Eu rodei o nginx na minha máquina local para enviar para vários aplicativos internos que eu uso bastante. O nginx faz com que seja mais fácil dar aos aplicativos aliases locais fáceis.

O problema é que os aplicativos fornecem informações muito confidenciais e, portanto, eu gostaria que não tivesse nginx ouvindo em qualquer uma das minhas interfaces públicas.

Meus blocos de configuração em /etc/nixos/configuration.nix são assim:

  networking.firewall = {
    enable = true;
    # allowedTCPPorts = [ 8081 ];
  };

  services.nginx = {
    enable = true;
    recommendedProxySettings = true;
    recommendedTlsSettings = true;
    virtualHosts."localhost" = {
      locations."/wiki".proxyPass = "http://localhost:8000";
      locations."/weblog".proxyPass = "http://localhost:3001";
    };
  };

Então, a pergunta é: como posso usar a porta 80 do firewall?

    
por Savanni D'Gerinel 05.05.2017 / 18:08

2 respostas

0

Assim, enquanto o nginx escuta todas as interfaces, a ativação do nginx não abre a porta no firewall.

No meu teste original, abri a porta do firewall e acessei o serviço a partir de uma máquina remota. Este foi o meu teste de controle para verificar se o serviço estava realmente acessível. Então fechei a porta do firewall. O serviço permaneceu acessível, mas apenas para esse navegador naquele computador. Testes futuros mostraram que, assim que eu fechava a porta, outros navegadores não conseguiam acessar o serviço, e esse navegador original acabava perdendo acesso também.

    
por 09.05.2017 / 16:05
2

Atualmente, não há opção de configuração do NixOS para definir a porta de escuta do ngix. Mas você pode adicionar uma configuração parcial ngix textualmente a configuration.nix usando a opção appendHttpConfig . Algo parecido com isto:

  services.nginx = {
    enable = true;
    recommendedProxySettings = true;
    recommendedTlsSettings = true;
    virtualHosts."localhost" = {
      locations."/wiki".proxyPass = "http://localhost:8000";
      locations."/weblog".proxyPass = "http://localhost:3001";
    };

    appendHttpConfig = "listen 127.0.0.1:80";
  };
    
por 08.05.2017 / 22:00