I am in the process of setting up a server configuration which consists of
A front end server running Nginx. Call it example.com
Another server, also running Nginx, (on the same network and accessible via an internal IP, say 10.118.10.9
) which runs - amongst other things - phpRedisAdmin.
The front end server has a reverse proxy configuration that goes like this
location ^~ /admin/ { proxy_pass https://10.118.0.9:8085/; }
Now when I browse to `https://example.com/admin/redisadmin/index.php'
The Memcache Admin page turns up just right. An examination of console logs shows now errors. I then proceed to click the Add Another Key link which brings up the phpMemcachedAdmin edit form. When I examine the code for this form I see
<form action="/redisadmin/edit.php?s=0" method="post">
Now if I enter a key name, a value and click on the Add button in the form the browser attempts to post to
https://example.com/redisadmin/edit.php?s=0
which promptly throws up a 404 since the action URL for the form should in fact have been
<form action="/admin/redisadmin/edit.php?s=0" method="post">
Somewhere along the way the /admin
bit got lopped off. I suspect that this is down to invalid Nginx reverse proxy settings. However, I am a novice when it comes to this so I have no idea how I should correct the problem.
Have checked the page of redis admin and found it reads the request URI from server side, which means it will include the leading slash '/' in the URL for the post form:
<form action="<?php echo format_html($_SERVER['REQUEST_URI'])?>" method="post">
You have the remove the leading slash in php so you can post to correct address when access via reverse proxy. However, as a workaround, you can rewrite the URL in nginx to fix it.
location / {
rewrite ^/redisadmin/(.*)$ /admin/redisadmin/$1 last;
Add the above rewrite rule to your setting in '/' seciton, see if it works.