使用pgadmin和apache的反向代理

时间:2019-03-27 12:10:42

标签: apache reverse-proxy 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>

和我的反向代理配置

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

正在工作。配置中的问题出在哪里?

3 个答案:

答案 0 :(得分: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 :(得分:0)

您尝试过使用最新版本吗,我认为此提交参考号已修复:LINK

在线文档:https://www.pgadmin.org/docs/pgadmin4/dev/server_deployment.html

答案 2 :(得分:0)

此配置有效, 将0.0.0.0用于pgadmin docker,否则使用您的ip

使用pgadmin端口更改端口5050

<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进行身份验证,请将您的域的有效SSL替换为yourdomain.com

<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>