Ошибка в работе squid
На сервере под управлением FreeBSD 8.2-RELEASE работает кэширующий прокси-сервер squid версии squid-2.7.9. Он был установлен после squid-3.1.19, который я не смог заставить работать с доменными пользователями. Так вот, после установки и настройки squid 2.7.stable9 в лог по пути /var/log/messages стали сыпаться ошибки… |
Они имели следующий вид:
# less /var/log/messages ... Jun 7 12:00:26 squid-proxy squid[65499]: execvp failed: (2) No such file or directory Jun 7 12:00:26 squid-proxy squid[65499]: Squid Parent: child process 0 started Jun 7 12:00:26 squid-proxy squid[65499]: Squid Parent: child process -1 exited with status 1 Jun 7 12:00:29 squid-proxy squid[65499]: Squid Parent: child process 65513 started ...
Как оказалось, это происходило из-за неправильной обработки squid-ом директивы deny_info в файле squid.conf. Несмотря на то, что данная версия позволяет держать страницы с ошибками (в моем случае – отображения запрета доступа к определенным acl) на стороннем ресурсе (url вида http://…), такое указание вызывало ошибку…
Кусок дефолтного конфига:
# less /usr/local/etc/squid/squid.conf.default # WELCOME TO SQUID 2.7.STABLE9 # ---------------------------- ... # TAG: deny_info # Usage: deny_info err_page_name acl # or deny_info http://... acl # Example: deny_info ERR_CUSTOM_ACCESS_DENIED bad_guys # # This can be used to return a ERR_ page for requests which # do not pass the 'http_access' rules. Squid remembers the last # acl it evaluated in http_access, and if a 'deny_info' line exists # for that ACL Squid returns a corresponding error page. # # The acl is typically the last acl on the http_access deny line which # denied access. The exceptions to this rule are: # - When Squid needs to request authentication credentials. It's then # the first authentication related acl encountered # - When none of the http_access lines matches. It's then the last # acl processed on the last http_access line. # # You may use ERR_ pages that come with Squid or create your own pages # and put them into the configured errors/ directory. # # Alternatively you can specify an error URL. The browsers will # get redirected (302) to the specified URL. %s in the redirection # URL will be replaced by the requested URL. # # Alternatively you can tell Squid to reset the TCP connection # by specifying TCP_RESET. # #Default: # none ...
Кусок моего файла конфигурации:
# less /usr/local/etc/squid/squid.conf | grep deny_info deny_info http://192.168.0.3/1x1.gif foto video tube banner deny_info http://192.168.0.3/denied.gif odnoklassniki mail-ru icq-ip map music game radio download vkontakte adobe
Причем при проверке конфигурационного файла самим squid ошибок не выводилось:
# squid -f /usr/local/etc/squid/squid.conf -k parse #
Чтобы данные ошибки больше не возникали, необходимо было перенести указанные в директиве deny_info файлы (у меня это 1×1.gif и denied.gif) в папку с файлами отображения ошибок. В конфигурационном фале squid она настраивается с помощью директивы error_directory. Ее значение по умолчанию:
# less /usr/local/etc/squid/squid.conf.default ... # TAG: error_directory # If you wish to create your own versions of the default # (English) error files, either to customize them to suit your # language or company copy the template English files to another # directory and point this tag at them. # # The squid developers are interested in making squid available in # a wide variety of languages. If you are making translations for a # langauge that Squid does not currently provide please consider # contributing your translation back to the project. # #Default: # error_directory /usr/local/etc/squid/errors/English ...
В моем случае эта директива имеет значение:
# less /usr/local/etc/squid/squid.conf | grep error_directory error_directory /usr/local/etc/squid/errors/Russian-1251
Вот в эту папку и необходимо было перенести файлы 1×1.gif и denied.gif. Кусок обновленного конфигурационного файла:
# less /usr/local/etc/squid/squid.conf | grep deny_info deny_info 1x1.gif foto video tube banner deny_info denied.gif odnoklassniki mail-ru icq-ip map music game radio download vkontakte adobe
После команды на перечитывание конфигурации squid-ом # /usr/local/etc/rc.d/squid reload
, указанные ошибки пропали.
Удачи!