我正在设置包含
的服务器配置example.com
10.118.10.9
)运行 - 除其他外 - phpRedisAdmin。前端服务器具有反向代理配置,如下所示
位置^〜/ admin / { proxy_pass https://10.118.0.9:8085/; }
现在我浏览“https://example.com/admin/redisadmin/index.php'
Memcache管理页面恰到好处。对控制台日志的检查现在显示错误。然后,我接着点击添加另一个密钥链接,该链接将显示phpMemcachedAdmin编辑表单。当我检查这个表单的代码时,我看到了
<form action="/redisadmin/edit.php?s=0" method="post">
现在,如果我输入一个键名,一个值,然后点击浏览器尝试发布到的表单中的“添加”按钮
https://example.com/redisadmin/edit.php?s=0
由于表单的操作URL实际上应该是,因此会立即抛出404
<form action="/admin/redisadmin/edit.php?s=0" method="post">
一路上/admin
位被砍掉了。我怀疑这是无效的Nginx反向代理设置。但是,我是一个新手,所以我不知道如何纠正这个问题。我非常感谢任何帮助。
答案 0 :(得分:1)
检查了redis admin的页面,发现它从服务器端读取了请求URI,这意味着它将包含前导斜杠&#39; /&#39;在帖子表格的网址中:
<form action="<?php echo format_html($_SERVER['REQUEST_URI'])?>" method="post">
您可以删除php中的前导斜杠,以便在通过反向代理访问时发布到正确的地址。但是,作为一种解决方法,您可以在nginx中重写URL来修复它。
location / {
rewrite ^/redisadmin/(.*)$ /admin/redisadmin/$1 last;
将上述重写规则添加到&#39; /&#39;中的设置这是否有效。
答案 1 :(得分:0)
正如@Johnnie Zhang所指出的那样,问题的根源在于领导/导致后期行动被视为绝对路径。但是,经过一番调查后我得出结论,虽然phpredisadmin在作为独立的Redis Web GUI使用时是一个很好的全方位选项,但是当通过反向代理使用时,它可能会造成太多问题。