对于版本pgAdmin 4 v3.0 https://www.pgadmin.org/download/pgadmin-4-python-wheel/,在问题真正解决之前,这里有一个快速命令行hack基于this https://redmine.postgresql.org/issues/3149.
cat > quickfix.txt <<THE_END
class ReverseProxied(object):
def __init__(self, app):
self.app = app
def __call__(self, environ, start_response):
script_name = environ.get("HTTP_X_SCRIPT_NAME", "")
if script_name:
environ["SCRIPT_NAME"] = script_name
path_info = environ["PATH_INFO"]
if path_info.startswith(script_name):
environ["PATH_INFO"] = path_info[len(script_name):]
scheme = environ.get("HTTP_X_SCHEME", "")
if scheme:
environ["wsgi.url_scheme"] = scheme
return self.app(environ, start_response)
app.wsgi_app = ReverseProxied(app.wsgi_app)
THE_END
sudo sed -i '/app = create_app()/r quickfix.txt' /usr/local/lib/python3.5/dist-packages/pgadmin4/pgAdmin4.py
rm quickfix.txt
上面的命令在文件中插入一段代码/usr/local/lib/python3.5/dist-packages/pgadmin4/pgAdmin4.py
,就在该行之后app = create_app()
.
另外,请确保路径pgAdmin4.py
在你的系统上是正确的。您可能需要调整上面的代码片段。
然后,配置nginx如下:
location /pgadmin-web/ {
proxy_pass http://127.0.0.1:5050/;
proxy_redirect off;
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 $scheme;
proxy_set_header X-Script-Name /pgadmin-web;
}
作为参考,还可以看看pgAdmin4.py https://github.com/postgres/pgadmin4/blob/master/web/pgAdmin4.py在 GitHub 上。