【发布时间】:2017-11-13 22:34:30
【问题描述】:
我安装了phpMyAdmin docker image 并运行它
# 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 内)充当反向代理(适用于 guacamole 等其他几个应用程序)。
在我的 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 容器的反向代理。
如果缺少一些重要信息,请告诉我。
【问题讨论】:
-
afaik proxy_pass 还会从您的位置转发上下文“pma”。您需要相应地重写
-
@gamma 感谢您的提示。我用谷歌搜索了一下,然后尝试“重写 /pma(.*) /$1 break;”但没有成功。你有提示重写应该是什么样子吗?
-
正如@robert 所说:删除尾部斜杠,然后尝试:重写 ^/pma (/?.*?)$ $1 break;
-
感谢@gamma,但仍然没有运气。 Nginx 抱怨““重写”指令中的参数数量无效”,所以我删除了 ^/pma 之后的附加空白。还是空白页。我现在有
location /pma { rewrite ^/pma(/?.*?)$ $1 break; proxy_pass http://localhost:8081/; proxy_buffering off; }。当然,在配置更改后,nginx 会像往常一样重新启动。我快要投降了……
标签: nginx docker phpmyadmin reverse-proxy