2017-06-12 720 views
1

我安裝phpMyAdmin docker image通過nginx的反向代理phpMyAdmin的搬運工容器內

# docker run --name phpmyadmin -d --link mariadb:db -p 8081:80 -e PMA_ABSOLUTE_URI=http://servm3/pma --restart unless-stopped phpmyadmin/phpmyadmin 

訪問http://servm3:8081運行工作正常。變量PMA_ABSOLUTE_URI用於反向代理,如docker page所示。

然後,我設置了nginx(本地安裝,不在docker中)充當反向代理(適用於其他幾個應用,例如鱷梨醬)。

在我的nginx.conf我:

location /pma/ {    
    proxy_pass http://localhost:8081/;         
    proxy_buffering off;          
} 

訪問http://servm3/pma顯示在瀏覽器選項卡上的圖標,但不是登錄頁面僅顯示一個空白頁。卸下前面的「/」,然後重新啓動的nginx只給出了404

# docker logs phpmyadmin 

說明不了什麼,除了從PHP和nginx的服務啓動信息,沒有相關的到phpMyAdmin。

本地nginx訪問日誌顯示幾個304和404代碼和一些200錯誤日誌不存在。詳細的日誌可以找到here on pastebin

我希望有人能告訴我如何讓nginx作爲phpMyAdmin docker容器的反向代理工作。

如果缺少一些重要信息,請讓我知道。

+0

afaik proxy_pass也從你的位置轉發上下文「pma」。您需要相應地重寫 – gamma

+0

@gamma感謝您的提示。我搜索了一下,並嘗試「重寫/pma(.*)/ $ 1中斷;」但沒有成功。你有什麼提示重寫應該看起來像什麼嗎?作爲@robert表示: –

+0

:刪除結尾的斜槓,然後嘗試:重寫^/pma(/ ?.*?)$ 1 break; – gamma

回答

0

只是刪除的/pma/結束反斜槓:

location /pma {    
    proxy_pass http://localhost:8081/;         
    proxy_buffering off;          
} 

有了它,瀏覽器將其視爲一個目錄,並請求相應的資產,這是意想不到的PMA。

+0

這給了我相同的空白頁面,nginx日誌看起來像在最初的問題鏈接相同。 –

+0

@släker讓我去辦公室,我會檢查它 – Robert

1

一定要包括重寫:

location ~ \/pma { 
    rewrite ^/pma(/.*)$ $1 break; 
    proxy_set_header X-Real-IP $remote_addr; 
    proxy_set_header X-Forwarded-For $remote_addr; 
    proxy_set_header Host $host; 
    proxy_pass http://localhost:8081; 
} 

您還需要設置PMA_ABSOLUTE_URI環境變量在你的搬運工,compose.yml:

PMA_ABSOLUTE_URI: https://yourdomain.com/pma/ 

只要你正在運行4.6 .5或更高版本的docker phpmyadmin你應該被設置。要更新你可以通過docker pull來拉下最新的。即

docker pull phpmyadmin/phpmyadmin