本文介绍了pgadmin4无法在nginx后面的特定位置工作的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我遇到了一些麻烦:pgadmin在位置/的nginx后面工作得很好,但是在位置/pgadmin的后面却无法工作工作出色:

I got some trouble: pgadmin working perfect behind nginx in location /, but it wont work behind location /pgadminWork great:

location / {
         proxy_http_version 1.1;
         proxy_set_header X-Real-IP  $remote_addr;
         proxy_set_header X-Forwarded-For $remote_addr;
         proxy_set_header Host $host;

         proxy_pass         http://127.0.0.1:5050;
}

不会工作:

location /pgadmin {
         proxy_http_version 1.1;
         proxy_set_header X-Real-IP  $remote_addr;
         proxy_set_header X-Forwarded-For $remote_addr;
         proxy_set_header Host $host;

         proxy_pass         http://127.0.0.1:5050;
}

我可能需要一些特定的重写吗?

May be i need some specific rewrite?

推荐答案

对于版本 pgAdmin 4 v3.0 ,直到问题实际解决为止,这是基于hack /redmine.postgresql.org/issues/3149"rel =" nofollow noreferrer>此.

For version pgAdmin 4 v3.0, until the issue is actually fixed, here's a quick command-line hack based on this.

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

上面的命令在app = create_app()行之后,将一段代码插入文件/usr/local/lib/python3.5/dist-packages/pgadmin4/pgAdmin4.py中.

The commands above insert a piece of code into the file /usr/local/lib/python3.5/dist-packages/pgadmin4/pgAdmin4.py, right after the line app = create_app().

此外,请确保系统上pgAdmin4.py的路径正确.您可能需要调整上面的代码段.

Also, make sure the path to pgAdmin4.py on your system is correct. You may need to adjust the snippet above.

然后,按如下所示配置nginx:

Then, configure nginx as follows:

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 在GitHub上.

For reference, also have a look at pgAdmin4.py on GitHub.

这篇关于pgadmin4无法在nginx后面的特定位置工作的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

09-12 19:04