Я пытаюсь запустить pgadmin4 за обратным прокси-сервером Nginx, но у меня возникла проблема, потому что мне нужно, чтобы pgadmin знал, что это на myhost.com/pgadmin, а не просто на myhost.com .... или на по крайней мере, я думаю, что это проблема.
В других веб-приложениях обычно есть какая-то настройка, называемая webroot или что-то подобное, для обозначения того, что он должен считать себя расположенным там, но я не могу найти ничего подобного для pgadmin4.
Существует ли эта настройка, если да, то где она?
Если нет, есть ли обходной путь?
Базовая проблема, которую Вы имеете здесь, состоит в том что pgadmin4
бэкенд очень чувствителен к URIs, передаваемому ему. Это также статически настроено, таким образом, мы не можем добавить 'префикс' к URIs для того, как обработать его.
Поэтому, так как мы не можем измениться pgadmin4
'пути' для обслуживания в frontend мы должны выбрать намного более злое путь из обслуживания этого как субдомен - pgadmin.domain.tld
с соответствующими сертификатами SSL.
nginx биты конфигурации были бы следующие:
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;
}
}
Это предполагает, что Вы уже имеете или знаете, как добраться, сертификаты SSL для помещения в место в конфигурациях. Однако это выходит за рамки вопроса.
Это - к сожалению, большая часть простого решения получения pgadmin4 для работы с 'обратным прокси', но Вы не сможете легко сделать это в блоке местоположения на существующем сайте. Это требовали в течение пары лет, но никогда не разрабатывали.
Просто удостоверьтесь, что Вы также укрепляете сервер и закрываете порты, к которым нельзя получить доступ непосредственно (как pgadmin4
порт с 'внешней стороны'). Иначе обратный компонент прокси может обойтись легко.
Согласно https://www.pgadmin.org/docs/pgadmin4/latest/container_deployment.html вы должны добавить заголовок запроса. Предположим, вы поместили pgAdmin4 в /pgadmin4 вместо /
proxy_set_header X-Script-Name /pgadmin4;
RequestHeader set X-Script-Name /pgadmin4