Execute o Pgadmin4 atrás do proxy reverso

0

Estou tentando executar o pgadmin4 atrás de um proxy reverso Nginx, mas estou tendo um problema porque preciso que o pgadmin saiba que ele está em myhost.com/pgadmin e não simplesmente em myhost.com .... ou em menos eu acho que é o problema.

Em outros aplicativos da web, geralmente há alguma configuração chamada webroot ou algo assim para designar que ela deve se considerar localizada lá, mas não consigo encontrar nada parecido com o pgadmin4.

Existe essa configuração? Se sim, onde ela está?

Se não, existe uma solução alternativa?

    
por Dean MacGregor 03.05.2018 / 19:24

1 resposta

1

O problema central que você está tendo aqui é que o backend pgadmin4 é altamente sensível para os URIs que estão sendo passados para ele. Ele também é configurado estaticamente, portanto, não podemos adicionar um 'prefixo' aos URIs para processá-lo.

Portanto, como não podemos alterar os pgadmin4 'paths' a serem veiculados no frontend, precisamos seguir o caminho muito mais ruim de servir isso como um subdomínio - pgadmin.domain.tld com os certificados SSL correspondentes.

Os bits de configuração do nginx seriam os seguintes:

server {
    listen 80;

    server_name pgadmin.domain.tld;

    # Redirect any non-HTTPS requests to HTTPS (aka: Force HTTPS)
    return 301 https://pgadmin.domain.tld$request_uri;
}

server {
    listen 443 ssl;

    # SSL Config goes here, but the bare minimum is this:
    ssl_certificate /path/to/ssl/cert/with/fullchains.pem;
    ssl_certificate_key /path/to/privkey.pem;

    location / {
        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 https;
        proxy_pass http://127.0.0.1:5050;
    }
}

Isso pressupõe que você já tenha ou saiba como obter os certificados SSL para colocar nas configurações. No entanto, isso está fora do escopo da questão.

Esta é, infelizmente, a solução mais simples para fazer o pgadmin4 funcionar com um 'proxy reverso', mas você não poderá fazê-lo facilmente dentro de um bloco de localização em um site existente. É solicitado há alguns anos, mas nunca foi desenvolvido.

Assegure-se de que você também endureça o servidor e feche as portas que não devem ser acessadas diretamente (como a pgadmin4 port do 'outside'). Caso contrário, o componente de proxy reverso pode ser contornado facilmente.

    
por Thomas Ward 03.05.2018 / 20:21