Nginx Config: Proxy Reverso de Front-End para Outra Porta

22

Eu tenho um pequeno servidor Web que atende solicitações na porta 5010 em vez de 80.

Gostaria de usar o nginx como um proxy de front-end para receber solicitações na porta 80 e depois permitir que essas solicitações sejam manipuladas pela porta 5010.

Instalei o nginx com sucesso e ele roda sem problemas no Ubuntu Karmic.

Mas, minhas tentativas de reconfigurar o nginx.conf padrão não foram bem-sucedidas.

Tentei incluir na diretiva do servidor o argumento de escuta para a porta 5010.

Eu também tentei a diretiva proxy_pass.

Quaisquer sugestões sobre alterações que precisam ser feitas ou diretivas que precisam ser definidas para ter apenas o encaminhamento de porta.

Ted Karmel
fonte

Respostas:

22

Estou assumindo que nginx não é o servidor escutando na porta 5010 e também 80, correto? Outra coisa está ouvindo no 5010 e você deseja ter o proxy nginx para esse servidor?

Se for esse o caso, aqui está um bom exemplo de configuração que usei no passado com sucesso:

server {
        listen       80;
        server_name  <YOUR_HOSTNAME>;
        location / {
            proxy_pass         http://127.0.0.1:5010/;
            proxy_redirect     off;

            proxy_set_header   Host             $host;
            proxy_set_header   X-Real-IP        $remote_addr;
            proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;

            client_max_body_size       10m;
            client_body_buffer_size    128k;

            proxy_connect_timeout      90;
            proxy_send_timeout         90;
            proxy_read_timeout         90;

            proxy_buffer_size          4k;
            proxy_buffers              4 32k;
            proxy_busy_buffers_size    64k;
            proxy_temp_file_write_size 64k;
        }
}

Eu acredito que deve realizar o que você está procurando. Boa sorte!

vmfarms
fonte
isso não funciona no macOS brew nginx. Você tem que adicionar um bloco servidor circundante http {}, caso contrário: nginx: [emerg] "servidor" directiva não é permitido aqui
muenalan
13

Muito minimalista - deixei as configurações de proxy como padrão, embora você possa procurar nele para se ajustar às suas necessidades.

# NGINX configuration

# System configuration ##################
worker_processes  3;
events {
    worker_connections  1024;
}
user nobody;

# Web configuration #####################
http {
    server {
        listen 80 default;
        location / {
            proxy_set_header   X-Real-IP        $remote_addr;
            proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
            proxy_set_header   Host             $host;

            proxy_pass http://127.0.0.1:5010/;

        }
    }
}
tylerl
fonte
2
Tyler - sua solução mínima é boa. Era o que eu queria. Iria dar-lhe pontos, se eu pudesse, mas ainda novo no serverfault
Ted Karmel