Данная система запущена на сервере назовём его "name1.domain1". Но к серверу так же можно получить доступ через "name2.subdomain2.domain2", но ссылки все абсолютные и ссылаются на "name1.domain1".
Что нужно перенастроить чтоб ссылки стали относительными?
Имя сервера
Re: Имя сервера
Не могли бы Вы конктретизировать вопрос? Какие ссылки абсолютные?
Re: Имя сервера
например на странице регистрации, нужно выбрать турнир
версия системы 2.3.13
Code: Select all
<a href="http://olimp.local/olimp/cgi-bin/register?contest_id=1">Test contest</a>
Re: Имя сервера
Скорее всего в конфигурационном файле apache нужно установить:
UseCanonicalName Off
UseCanonicalName Off
Re: Имя сервера
Я так понял что скрипты пишут в адресах тот адрес, по которому к ним обращаться, если обращаться по имени сервера, то и в коде страницы везде будет имя сервера, если по ип, то и в коде ип.
В нашей сети задумка такая, мы обращаемя к серверу "один", он работает в качестве прокси, этот сервер "один" в свою очередь обращается к серверу "два", на котором и находится система. Имена у обоих серверов разные, причём сервер "два" виден только из локальной сети, сервер "один" виден отовсюду. Возникает такая ситуация что при обращении к серверу "один" нам возвращается страничка, ссылки на которой предназначены для работы с сервером "два".
Возможно что-то не правильно понял. "UseCanonicalName Off" было именно так, пробовал делать "On" разницы не заметил.
"...скрипты пишут в адресах тот адрес, по которому к ним обращаться..." так это или нет, если да то что можно сделать?
В нашей сети задумка такая, мы обращаемя к серверу "один", он работает в качестве прокси, этот сервер "один" в свою очередь обращается к серверу "два", на котором и находится система. Имена у обоих серверов разные, причём сервер "два" виден только из локальной сети, сервер "один" виден отовсюду. Возникает такая ситуация что при обращении к серверу "один" нам возвращается страничка, ссылки на которой предназначены для работы с сервером "два".
Возможно что-то не правильно понял. "UseCanonicalName Off" было именно так, пробовал делать "On" разницы не заметил.
"...скрипты пишут в адресах тот адрес, по которому к ним обращаться..." так это или нет, если да то что можно сделать?
Re: Имя сервера
Да, это так.LMP wrote:Я так понял что скрипты пишут в адресах тот адрес, по которому к ним обращаться, если обращаться по имени сервера, то и в коде страницы везде будет имя сервера, если по ип, то и в коде ип.
Тогда можно наоборот установить CanonicalName веб-сервера во внешнее имя и поставить UseCanonicalName OnLMP wrote:В нашей сети задумка такая, мы обращаемя к серверу "один", он работает в качестве прокси, этот сервер "один" в свою очередь обращается к серверу "два", на котором и находится система. Имена у обоих серверов разные, причём сервер "два" виден только из локальной сети, сервер "один" виден отовсюду. Возникает такая ситуация что при обращении к серверу "один" нам возвращается страничка, ссылки на которой предназначены для работы с сервером "два".
Re: Имя сервера
"UseCanonicalName On" не помогло, так и остались ссылки на сервер "два".
Сравнил значение элементов массива $_SERVER в пхп:
"HTTP_HOST" - имя сервера куда обращаемся, не зависит от "UseCanonicalName"(по моим наблюдениям именно это значение и используется в цги-скриптах);
"SERVER_NAME" - если "UseCanonicalName On" то содержит значение "ServerName" Apache'a, иначе равен значению "HTTP_HOST";
"SERVER_ADDR" - ип сервера.
Даже не знаю что ещё попробовать.
Сравнил значение элементов массива $_SERVER в пхп:
"HTTP_HOST" - имя сервера куда обращаемся, не зависит от "UseCanonicalName"(по моим наблюдениям именно это значение и используется в цги-скриптах);
"SERVER_NAME" - если "UseCanonicalName On" то содержит значение "ServerName" Apache'a, иначе равен значению "HTTP_HOST";
"SERVER_ADDR" - ип сервера.
Даже не знаю что ещё попробовать.
Re: Имя сервера
Может быть стоит попробовать сделать port forwarding с внешнего сервера.
Re: Имя сервера
решил проблему следущим образом - заменил все симлинки из папки сги на shell-скрипты примерно следущего содержания:
new-client
new-client
Code: Select all
#!/bin/bash
export HTTP_HOST='нужное_нам_доменное_имя'
/usr/lib/ejudge/cgi-bin/new-client