2015-03-26 4 views
1

Я нахожусь в процессе создания конфигурации сервера, которая состоит изNginx Reverse Proxy Настройки

  • Передний конец сервера Nginx работает. Назовите его example.com
  • Другой сервер, также работающий с Nginx, (в той же сети и доступный через внутренний IP, скажем 10.118.10.9), который работает, среди прочего, - phpRedisAdmin.
  • Передний конец сервер имеет обратный прокси-конфигурацию, которая идет как этот

    место^~/админ/{ 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 

который быстро подбрасывает 404, так как URL действия для формы на самом деле должно бы быть

<form action="/admin/redisadmin/edit.php?s=0" method="post"> 

Где-то, как /admin немного получил рубили. Я подозреваю, что это относится к неверным настройкам обратного прокси-сервера Nginx. Тем не менее, я новичок, когда дело доходит до этого, поэтому я понятия не имею, как мне исправить проблему. Я бы очень признателен за любую помощь.

ответ

1

проверили страницу REDIS администратора и обнаружил, что считывает запрос URI из стороны сервера, что означает, что она будет включать в себя ведущую косую черту «/» в URL для почтовой формы:

<form action="<?php echo format_html($_SERVER['REQUEST_URI'])?>" method="post"> 

У вас есть удалите ведущую косую черту в php, чтобы вы могли отправлять сообщения по правильному адресу при доступе через обратный прокси. Однако в качестве обходного пути вы можете переписать URL-адрес в nginx, чтобы исправить его.

location/{ 
    rewrite ^/redisadmin/(.*)$ /admin/redisadmin/$1 last; 

Добавить вышеперечисленное правило перезаписи в настройку в '/' seciton, см., Если оно работает.

+0

спасибо. См. Мой ответ ниже – DroidOS

0

Поскольку @Johnnie Zhang указал, что корень проблемы здесь был ведущим /, в результате которого постулирование рассматривалось как абсолютный путь. Однако после небольшого исследования я пришел к выводу, что, хотя phpredisadmin - отличный универсальный вариант при использовании в качестве автономного веб-интерфейса Redis, он может представлять слишком много проблем при использовании через обратный прокси-сервер.