Автор Тема: Помогите с mod_proxy и mod_rewrite [решено]  (Прочитано 1298 раз)

Оффлайн rotkart

  • Участник
  • *
  • Сообщений: 661
Доброго дня!
У меня в школе есть сервер на Кентавре 7, к которому департамент организовал доступ по 80 порту.
Там стоит apache2 и публикует в интернет РУЖЭЛЬ.
Хочу для своих учащихся создать собственный ejudge-сервер на другой машине для сдачи домашних заданий по программированию. Из локальной сети компьютерных классов сервер доступен, а вот через интернет возникла следующая ситуация:

на Кентавре в apache я активировал модуль proxy_http и прописал следующее в  /etc/httpd2/conf/sites-available/default.conf
# Proxy for ejudge
ProxyRequests Off
ProxyPreserveHost On

         <Proxy *>
                Order deny,allow
                Allow from all
         </Proxy>

ProxyPass /ejudge http://192.168.20.50/
ProxyPassReverse /ejudge http://192.168.20.50/

        <Location /ejudge>
              Order allow,deny
              Allow from all
        </Location>
В общем-то всё по документации apache. Соответственно все заработало - при вызове  сервер_школы/ejudge из интернет я вижу веб-сервер своего учительского компа.

Теперь пытаюсь открыть сам ejudge (это набор cgi-скриптов ведь) - пишу в браузере сервер_школы/ejudge/cgi-bin/register.
Открывается страница с приглашением ввести логин и пароль - то есть cgi отрабатывает.
Ввожу данные и система пытается открыть адрес сервер_школы/cgi-bin/register - то есть без добавки /ejudge в середине.

Помогите составить правило для mod_rewrite, пожалуйста!

Я попытался так:
RewriteEngine On
RewriteRule %{HTTP_HOST}/cgi-bin/register %{HTTP_HOST}/ejudge/cgi-bin/register
И так:
RewriteRule ^/cgi-bin(.*) /ejudge/cgi-bin$1Всё равно убирается ejudge из середины.
« Последнее редактирование: 17.10.2013 16:57:21 от rotkart »
Научить нельзя, научиться можно.

Оффлайн rotkart

  • Участник
  • *
  • Сообщений: 661
Re: Помогите с mod_proxy и mod_rewrite
« Ответ #1 : 17.10.2013 16:57:00 »
Дочитал-таки в мане до нужной опции - [P]

Итог:
# Proxy for ejudge
ProxyRequests Off
ProxyPreserveHost On

         <Proxy *>
                Order deny,allow
                Allow from all
         </Proxy>

ProxyPass /ejudge http://192.168.20.50/ejudge
ProxyPassReverse /ejudge http://192.168.20.50/ejudge

        <Location /ejudge>
              Order allow,deny
              Allow from all
        </Location>

RewriteEngine On

RewriteRule /cgi-bin/client http://192.168.20.50/cgi-bin/client [P]
RewriteRule /cgi-bin/master http://192.168.20.50/cgi-bin/master [P]
RewriteRule /cgi-bin/new-judge http://192.168.20.50/cgi-bin/new-judge [P]
RewriteRule /cgi-bin/new-register http://192.168.20.50/cgi-bin/new-register [P]
RewriteRule /cgi-bin/register http://192.168.20.50/cgi-bin/register [P]
RewriteRule /cgi-bin/team http://192.168.20.50/cgi-bin/team [P]
RewriteRule /cgi-bin/users http://192.168.20.50/cgi-bin/users [P]
RewriteRule /cgi-bin/judge http://192.168.20.50/cgi-bin/judge [P]
RewriteRule /cgi-bin/new-client http://192.168.20.50/cgi-bin/new-client [P]
RewriteRule /cgi-bin/new-master http://192.168.20.50/cgi-bin/new-master [P]
RewriteRule /cgi-bin/serve-control http://192.168.20.50/cgi-bin/serve-control [P]
Научить нельзя, научиться можно.