Имя сервера

Обсуждение вопросов, связанных с системой проведения турниров ejudge.
Post Reply
LMP
Posts:7
Joined:19 February 2010, 08:57
Имя сервера

Post by LMP » 19 February 2010, 09:07

Данная система запущена на сервере назовём его "name1.domain1". Но к серверу так же можно получить доступ через "name2.subdomain2.domain2", но ссылки все абсолютные и ссылаются на "name1.domain1".

Что нужно перенастроить чтоб ссылки стали относительными?

cher
Posts:1153
Joined:13 March 2004, 17:00
Contact:

Re: Имя сервера

Post by cher » 19 February 2010, 11:38

Не могли бы Вы конктретизировать вопрос? Какие ссылки абсолютные?

LMP
Posts:7
Joined:19 February 2010, 08:57

Re: Имя сервера

Post by LMP » 19 February 2010, 11:45

например на странице регистрации, нужно выбрать турнир

Code: Select all

<a href="http://olimp.local/olimp/cgi-bin/register?contest_id=1">Test contest</a>
версия системы 2.3.13

cher
Posts:1153
Joined:13 March 2004, 17:00
Contact:

Re: Имя сервера

Post by cher » 19 February 2010, 16:12

Скорее всего в конфигурационном файле apache нужно установить:
UseCanonicalName Off

LMP
Posts:7
Joined:19 February 2010, 08:57

Re: Имя сервера

Post by LMP » 23 February 2010, 12:04

Я так понял что скрипты пишут в адресах тот адрес, по которому к ним обращаться, если обращаться по имени сервера, то и в коде страницы везде будет имя сервера, если по ип, то и в коде ип.

В нашей сети задумка такая, мы обращаемя к серверу "один", он работает в качестве прокси, этот сервер "один" в свою очередь обращается к серверу "два", на котором и находится система. Имена у обоих серверов разные, причём сервер "два" виден только из локальной сети, сервер "один" виден отовсюду. Возникает такая ситуация что при обращении к серверу "один" нам возвращается страничка, ссылки на которой предназначены для работы с сервером "два".

Возможно что-то не правильно понял. "UseCanonicalName Off" было именно так, пробовал делать "On" разницы не заметил.

"...скрипты пишут в адресах тот адрес, по которому к ним обращаться..." так это или нет, если да то что можно сделать?

cher
Posts:1153
Joined:13 March 2004, 17:00
Contact:

Re: Имя сервера

Post by cher » 23 February 2010, 13:36

LMP wrote:Я так понял что скрипты пишут в адресах тот адрес, по которому к ним обращаться, если обращаться по имени сервера, то и в коде страницы везде будет имя сервера, если по ип, то и в коде ип.
Да, это так.
LMP wrote:В нашей сети задумка такая, мы обращаемя к серверу "один", он работает в качестве прокси, этот сервер "один" в свою очередь обращается к серверу "два", на котором и находится система. Имена у обоих серверов разные, причём сервер "два" виден только из локальной сети, сервер "один" виден отовсюду. Возникает такая ситуация что при обращении к серверу "один" нам возвращается страничка, ссылки на которой предназначены для работы с сервером "два".
Тогда можно наоборот установить CanonicalName веб-сервера во внешнее имя и поставить UseCanonicalName On

LMP
Posts:7
Joined:19 February 2010, 08:57

Re: Имя сервера

Post by LMP » 23 February 2010, 14:53

"UseCanonicalName On" не помогло, так и остались ссылки на сервер "два".

Сравнил значение элементов массива $_SERVER в пхп:
"HTTP_HOST" - имя сервера куда обращаемся, не зависит от "UseCanonicalName"(по моим наблюдениям именно это значение и используется в цги-скриптах);
"SERVER_NAME" - если "UseCanonicalName On" то содержит значение "ServerName" Apache'a, иначе равен значению "HTTP_HOST";
"SERVER_ADDR" - ип сервера.

Даже не знаю что ещё попробовать.

cher
Posts:1153
Joined:13 March 2004, 17:00
Contact:

Re: Имя сервера

Post by cher » 26 February 2010, 11:40

Может быть стоит попробовать сделать port forwarding с внешнего сервера.

LMP
Posts:7
Joined:19 February 2010, 08:57

Re: Имя сервера

Post by LMP » 18 March 2010, 16:38

решил проблему следущим образом - заменил все симлинки из папки сги на shell-скрипты примерно следущего содержания:

new-client

Code: Select all

#!/bin/bash
export HTTP_HOST='нужное_нам_доменное_имя'
/usr/lib/ejudge/cgi-bin/new-client

Post Reply