首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >pgadmin4不会在nginx后面的特定位置工作。

pgadmin4不会在nginx后面的特定位置工作。
EN

Stack Overflow用户
提问于 2017-09-23 16:12:20
回答 3查看 7.9K关注 0票数 8

我遇到了一些麻烦:在location /中,pgadmin在nginx后面运行得很好,但在location /pgadmin后面却不起作用。

代码语言:javascript
运行
复制
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;
}

不起作用:

代码语言:javascript
运行
复制
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;
}

也许我需要一些具体的重写?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-05-24 18:09:07

对于pgAdmin 4 v3.0版本,在实际解决问题之前,下面是一个基于的快速命令行hack

代码语言:javascript
运行
复制
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:

代码语言:javascript
运行
复制
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 on GitHub。

票数 4
EN

Stack Overflow用户

发布于 2018-11-06 16:56:40

修复似乎不再需要了。

根据红地雷的问题,SCRIPT_NAME env可以使用(至少与最新的官方码头形象)。

Docker从问题中编写片段(为我工作):

代码语言:javascript
运行
复制
version: "3" 

services:

  pgadmin4:

    image: dpage/pgadmin4:latest

    environment:
      - PGADMIN_DEFAULT_EMAIL=bla@bla.com
      - PGADMIN_DEFAULT_PASSWORD=thepwd
      - SCRIPT_NAME=/pgadmin4

    volumes:
      - pgadm:/var/lib/pgadmin

    labels:
      - "traefik.enable=true" 
      - "traefik.backend=pgadmin4" 
      - "traefik.frontend.priority=600" 
      - "traefik.frontend.rule=Method:GET" 
      - "traefik.frontend.rule=PathPrefix:/pgadmin4"      

  postgis:
    image: mdillon/postgis:9.6-alpine

    volumes:
      - pgdb:/var/lib/postgresql/data

    expose:
      - 5432

    env_file:
      - pg.env

    labels:
      - "traefik.enable=false" 

volumes:
  pgdb:
  pgadm:
票数 4
EN

Stack Overflow用户

发布于 2017-09-24 13:04:51

这是pgAdmin4版本1.6中的一个bug,现在已经修复,并将在下一个版本中提供。

参考文献:链接

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46381668

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档