У меня очень любопытная проблема на моем Linux-сервере RedHat. У меня установлен прокси-сервер Squid, который отлично работает для адресов WAN. Однако, когда я пытаюсь получить доступ к своей локальной системе MediaWiki, я получаю
The requested URL could not be retrieved
The following error was encountered: Unable to determine IP address from host name for ServerName
Когда я перезапускаю squid, я могу получить доступ к этим локальным адресам в течение примерно 5 минут, но затем возвращается то же самое сообщение. Теперь я убедился, что могу нормально пинговать ServerName, поэтому проблема не в разрешении имен.
Я также добавил строки в свой squid.conf, которые, по-видимому, указывают на то, что все инструкции, которые я нахожу в Интернете, должны решить проблему.
acl ServerName dstdomain DomainName
always_direct allow ServerName
(ПРИМЕЧАНИЕ: имена были изменены, чтобы защитить невиновных)
Затем я также добавил:
acl MyDomain src 192.168.0.1/255.255.255.192
never_direct deny MyDomain
Тот же результат (и было какое-то странное сообщение от aclParseIpData, предупреждающее меня о том, что моя сетевая маска удаляет часть моего указанного IP-адреса), что, по моему мнению, было действительно очень странным сообщением.
Правильный ответ - изменить файлы proxy.pac и wpad.dat. Вместо того, чтобы просто сказать:
function FindProxyForURL(url,host)
{
return "PROXY 192.168.0.XX:3128; DIRECT";
}
вместо этого я должен изменить его, чтобы, когда машины увидели, что это имя хоста локального компьютера, а не URL-адрес, они не пытались использовать прокси. Функция isPlainHostName работала отлично. Я использовал следующий код:
function FindProxyForURL(url,host)
{
if(isPlainHostName(host))
return "DIRECT";
return "PROXY 192.168.0.XX:3128; DIRECT";
}
Просто я не знал, как правильно использовать файл .pac, чтобы направлять пользователей на локальные адреса.