Запустите Pgadmin4 за обратным прокси

Я пытаюсь запустить pgadmin4 за обратным прокси-сервером Nginx, но у меня возникла проблема, потому что мне нужно, чтобы pgadmin знал, что это на myhost.com/pgadmin, а не просто на myhost.com .... или на по крайней мере, я думаю, что это проблема.

В других веб-приложениях обычно есть какая-то настройка, называемая webroot или что-то подобное, для обозначения того, что он должен считать себя расположенным там, но я не могу найти ничего подобного для pgadmin4.

Существует ли эта настройка, если да, то где она?

Если нет, есть ли обходной путь?

0
задан 3 May 2018 в 20:24

2 ответа

Базовая проблема, которую Вы имеете здесь, состоит в том что 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 порт с 'внешней стороны'). Иначе обратный компонент прокси может обойтись легко.

1
ответ дан 29 October 2019 в 23:35

Согласно https://www.pgadmin.org/docs/pgadmin4/latest/container_deployment.html вы должны добавить заголовок запроса. Предположим, вы поместили pgAdmin4 в /pgadmin4 вместо /

  • Nginx: proxy_set_header X-Script-Name /pgadmin4;
  • Apache HTTPD: RequestHeader set X-Script-Name /pgadmin4
0
ответ дан 28 May 2020 в 09:19

Другие вопросы по тегам:

Похожие вопросы: