#apache #reverse-proxy #pgadmin-4
#apache #обратный прокси #pgadmin-4
Вопрос:
Я хотел бы настроить локальный pgadmin в режиме сервера за обратным прокси. Обратный прокси и pgadmin могут находиться на одном компьютере. Я пытался настроить, но это всегда приводит к сбою. Вот mypgadmin conf:
Listen 8080
<VirtualHost *:8080>
SSLEngine on
SSLCertificateFile /etc/pki/tls/certs/pgadmin.crt
SSLCertificateKeyFile /etc/pki/tls/private/pgadmin.key
LoadModule wsgi_module modules/mod_wsgi.so
LoadModule ssl_module modules/mod_ssl.so
WSGIDaemonProcess pgadmin processes=1 threads=25
WSGIScriptAlias /pgadmin /usr/lib/python2.7/site-packages/pgadmin4-web/pgAdmin4.wsgi
<Directory /usr/lib/python2.7/site-packages/pgadmin4-web/>
WSGIProcessGroup pgadmin
WSGIApplicationGroup %{GLOBAL}
<IfModule mod_authz_core.c>
# Apache 2.4
Require all granted
</IfModule>
<IfModule !mod_authz_core.c>
# Apache 2.2
Order Deny,Allow
Deny from All
Allow from 127.0.0.1
Allow from ::1
</IfModule>
</Directory>
</VirtualHost>
и мой обратный прокси-сервер conf
Listen 443
<VirtualHost *:443>
SSLEngine on
SSLCertificateFile /etc/pki/tls/certs/localhost.crt
SSLCertificateKeyFile /etc/pki/tls/private/localhost.key
ErrorLog /var/log/httpd/reverse_proxy_error.log
CustomLog /var/log/httpd/reverse_proxy_access.log combined
SSLProxyEngine on
SSLProxyVerify require
SSLProxyCheckPeerCN off
SSLProxyCheckPeerName off
SSLProxyCACertificateFile "/etc/pki/tls/certs/ca-bundle.crt"
ProxyPreserveHost On
ProxyPass / https://localhost:8080/pgadmin
ProxyPassReverse / https://localhost:8080/pgadmin
</VirtualHost>
Запускается httpd, но когда я хочу протестировать его с
wget --no-check-certificate https://localhost/
это выдает мне ошибку 400
но
wget --no-check-certificate https://localhost:8080/pgadmin
работает. В чем проблема в моей конфигурации?
Комментарии:
1. Сообщение об ошибке `Отправлен HTTP-запрос, ожидающий ответа … Ошибка прокси 502 «
Ответ №1:
это работает для меня. Я создаю прокси-сервер pgadmin для подкаталога (https://localhost/pgadmin )
<VirtualHost *:80>
ServerName localhost
DocumentRoot "/var/www"
<Directory "/var/www">
AllowOverride all
</Directory
ProxyPass /ws/ ws://0.0.0.0:8888/
ProxyPass /phpmyadmin/ http://phpmyadmin/
<Location /pgadmin/>
ProxyPass http://pgadmin:5050/
ProxyPassReverse http://pgadmin:5050/
RequestHeader set X-Script-Name /pgadmin
RequestHeader set Host $http_host
</Location>
</VirtualHost>
Комментарии:
1. Это помогло мне, в частности, поместив ProxyPass и ProxyPass Reverse в <Location /pgadmin />, и в моем случае я использовал localhost: 5050 Спасибо
Ответ №2:
Вы пробовали с последней версией, я думаю, что это исправлено, эта ссылка на фиксацию LINK
Онлайн-документы:https://www.pgadmin.org/docs/pgadmin4/dev/server_deployment.html
Ответ №3:
Эта конфигурация работает, используйте 0.0.0.0 для pgadmin docker, иначе используйте свой ip
измените порт 5050 на свой порт pgadmin
<VirtualHost *:80>
ServerName pgadmin.yourdomain.com
RedirectMatch permanent ^/pgadmin4$ /pgadmin4/
ProxyPreserveHost On
ProxyPass / http://0.0.0.0:5050/
ProxyPassReverse / http://0.0.0.0:5050/
Header edit Location ^/ /pgadmin4/
Header always set X-Script-Name /pgadmin4
</VirtualHost>
Настройте с помощью SSL, замените yourdomain.com с действительным SSL для вашего домена
<VirtualHost *:80>
ServerName pgadmin.yourdomain.com
RedirectMatch permanent ^/(.*)$ https://pgadmin.yourdomain.com/$1
</VirtualHost>
<VirtualHost *:443>
ServerName pgadmin.yourdomain.com
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/yourdomain.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/yourdomain.com/privkey.pem
RedirectMatch permanent ^/pgadmin4$ /pgadmin4/
ProxyPreserveHost On
ProxyPass / http://0.0.0.0:5050/
ProxyPassReverse / http://0.0.0.0:5050/
Header edit Location ^/ /pgadmin4/
Header always set X-Script-Name /pgadmin4
</VirtualHost>