Crie vários aliases para endereços de host local em portas diferentes

3

Eu tenho alguns webapps em execução no meu localhost que posso acessar pelo meu navegador em diferentes portas.

Por exemplo, eu tenho um servidor de notebook IPython em execução na porta 8888 (posso acessá-lo em http://localhost:8888 ) e um pequeno aplicativo de frasco que escuta na porta 9000.

Eu sei que posso definir um alias para localhost modificando /etc/hosts , mas o que eu gostaria de conseguir aqui é ter diferentes aliases para as diferentes portas.

Por exemplo, eu gostaria de abrir meu navegador e usar http://notebooks/ em vez de http://localhost:8888 e http://flaskapp em vez de http://localhost:9000 .

Existe uma maneira fácil de fazer isso?

    
por lucacerone 19.01.2015 / 08:47

1 resposta

2

Você terá que usar alguma forma de regra de encaminhamento baseada no destino do iptables ou usar o Apache ou nginx como proxy . Para nginx :

sudo apt-get install nginx

Crie uma configuração do servidor virtual do formulário:

server {
    server_name notebooks;
    location / {
        proxy_pass http://localhost:8888;
        proxy_redirect default;
    }
    access_log /var/log/nginx/notebook-access.log;
    error_log /var/log/nginx/notebook-error.log;
}

Isso pode ser feito editando o site padrão ( /etc/nginx/sites-available/default ) ou criando um novo arquivo nesse diretório ( /etc/nginx/sites-available/notebook , por exemplo). Use seu editor favorito com privilégios de administrador ( sudo vim , sudo -H gedit , etc.).

Em seguida, ative o site criando um link em /etc/nginx/sites-enabled/ , se ainda não existir:

sudo ln -s /etc/nginx/sites-{available,enabled}/default
# or, if you created a new file:
sudo ln -s /etc/nginx/sites-{available,enabled}/notebook

Reinicie o nginx :

sudo service nginx restart

Edite /etc/hosts para que você tenha um alias com o mesmo nome usado para server_name na configuração acima.

Você pode criar muitos desses servidores virtuais para fazer proxy em várias portas.

Não tenho muita certeza do meu iptables-fu, mas alguns redirecionamentos simples parecem funcionar bem para mim. Por exemplo, com um servidor web Python simples ( python3 -m http.server 8888 ):

iptables -t nat -A OUTPUT -p tcp -d notebooks --dport 80 -j REDIRECT --to-ports 8888

O comando é fácil de entender:

  • -A OUTPUT -p tcp para corresponder ao tráfego TCP de saída.
  • -d notebooks e --dport 80 para corresponder ao nome do host e à porta de destino. A porta não é necessária aqui, já que você provavelmente estará usando apenas uma porta.
  • -j REDIRECT --to-ports 8888 para usar a cadeia REDIRECT, com 8888 como a porta de destino para o redirecionamento. Você só pode usar essa cadeia com a tabela nat .
  • Uma entrada para notebooks deve existir em /etc/hosts antes em que você aplica esta regra.
por muru 19.01.2015 / 09:19