Proxy Nginx uma porta para várias portas

1

Eu tenho apenas uma porta aberta no firewall e vários serviços em execução. Eu quero redirecionar uma solicitação baseada em URI para diferentes aplicativos. Por exemplo, se eu estou acessando http: example.com: 8443 / test1 para ser redirecionado para um aplicativo em execução na porta 8440 e se estou acessando http: example.com: 8443 / test1 para ser redirecionado para o processo nginx mestre em execução na porta 80

Meu arquivo de configuração é assim:

server {
    listen      127.0.0.1:8443;
    location  /test1{
        proxy_pass  http://127.0.0.1:8230;
    }
}
server {
    listen      127.0.0.1:8443;
    client_max_body_size 100m;
    location  /test2{
        proxy_pass  http://127.0.0.1:80; #Nginx master webserver port
    }
}

Mas quando estou acessando localhost: 8443 / test2 estou recebendo um 403 Forbidden mas se eu sou a porta de redirecionamento para test1 para 80 como este

server {
    listen      127.0.0.1:8443;
    location  /test1{
        proxy_pass  http://127.0.0.1:80;
    }
}

está funcionando.

    
por Lucian 06.11.2018 / 16:50

1 resposta

1

Você deve ter apenas 1 servidor, pois ambos estão ouvindo 127.0.0.1:8443 . Você teria dois blocos de localização dentro desse servidor, por exemplo:

server {
    listen      127.0.0.1:8443;
    client_max_body_size 100m;

    location  /test1 {
        proxy_pass  http://127.0.0.1:8230;
    }


    location  /test2 {
        proxy_pass  http://127.0.0.1:80; #Nginx master webserver port
    }
}

Além disso, lembre-se de que você está intermediando o proxy com o tráfego, em vez de redirecioná-lo. Você provavelmente precisará de muito mais configuração, dependendo de como seus aplicativos estão configurados, já que o /test2 provavelmente será passado diretamente para o seu servidor na porta 80.

Atualização: para suporte a PHP, você precisará certificar-se de que o php-fpm está instalado e precisará de um bloco de localização em seu servidor nginx mestre, semelhante a:

location ~ \.php$ {
    proxy_pass http://your_ip_address:8080;
    proxy_set_header Host $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;
}
    
por 06.11.2018 / 17:01