nginx: proxy_bind para endereço IP aleatório no intervalo

2

Estou tentando configurar um proxy no nginx que vincula todas as solicitações com proxy a um endereço IP aleatório em um intervalo específico. Cada solicitação com proxy será originada de um endereço IP diferente.

Atualmente, tenho a configuração publicada abaixo. No entanto, por algum motivo, o nginx não está escutando na porta 80, mesmo que a configuração seja muito boa. Eu recebo conexão recusada ao tentar acessar o servidor.

Eu estou indo sobre isso errado?

server {
  listen 80;
  listen [::]:80;

  server_name my.server.name;

  location / {
    # proxy all requests to destination
    proxy_pass https://destination;

    # generate random IPv6 between IPv6Prefix::0 and IPv6Prefix::13
    set_by_lua_block $ip { return 'IPv6Prefix::' .. string.format('%x', math.random(0, 19)) }
    proxy_bind $ip;

    # keep connections alive
    proxy_http_version 1.1;
    proxy_set_header Connection '';
  }
}
    
por Steffan Long 26.01.2016 / 20:11

1 resposta

2

Para testar se o Nginx está escutando na porta 80, no mesmo servidor, você pode executar:

sudo netstat -nlp | grep nginx

Você deve receber de volta um resultado correspondente ao Nginx, informando que está escutando na porta 80. Se isso funcionar, o próximo teste é acessar o Nginx de dentro do servidor via HTTP:

curl http://127.0.0.1

Se isso funcionar, o problema é um firewall ou outro problema de rede. Verifique se o firewall no servidor permite HTTP de entrada, se você estiver executando um. Se você estiver em um ambiente como o da AWS, talvez também seja necessário verificar se as regras do Grupo de segurança também estão permitindo solicitações HTTP de entrada para o host.

Em relação ao seu código de proxy, observe que a ligação de proxy é para ligação a endereços IP locais . Ou seja, endereços IP que já estão atribuídos à máquina. Para que isso funcione, parece que você precisa de algum código adicional para ser executado antes do Nginx iniciar, que atribui cada endereço IP no intervalo de destino à sua máquina, supondo que o seu sistema operacional e hardware de rede o suportem.

Para que seja uma operação segura, todos os endereços IP também precisam ser usados, já que a transmissão de duas máquinas que possuem o mesmo endereço IP pode causar problemas.

    
por 26.01.2016 / 22:54