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.