Мне нужно настроить Squid как обратный прокси с настраиваемым помощником аутентификации для каждого входящего запроса. Предполагается, что каждый запрос к Squid выполняется с базовой аутентификацией. Любое соединение, не прошедшее аутентификацию, должно быть разорвано. Я новичок в Squid. Ниже приведен сценарий конфигурации, который я использовал. Этот образец предназначен для доступа к "mindofaprogrammer.blog.com",
acl all src all
acl manager proto cache_object
http_port 80 accel defaultsite=mindofaprogrammer.blog.com
cache_peer mindofaprogrammer.blog.com parent 80 0 no-query originserver name=myAccel
acl myblog dstdomain mindofaprogrammer.blog.com
http_access allow myblog
cache_peer_access myAccel allow myblog
cache_peer_access myAccel deny all
auth_param basic program C:/wamp/bin/php/php5.3.0/php.exe "c:/squid/libexec/authhelper.php"
auth_param basic children 2
auth_param basic realm eReader
auth_param basic credentialsttl 5 hours
acl AuthUsers proxy_auth REQUIRED
http_access allow AuthUsers
access_log c:/squid/var/logs/access.log squid
coredump_dir c:/squid/var/cache
Я написал пользовательский помощник по аутентификации в PHP-скрипте. Список того же следующий:
<?php
$f = fopen("php://stdin", "r");
while ($line = fgets($f)) {
$line = trim($line);
$fields = explode(' ', $line);
$username = rawurldecode($fields[0]); //1738
$password = rawurldecode($fields[1]); //1738
if ($username == 'hello'
and $password == 'world') {
fwrite(STDOUT, "OK\n");
} else if ($username == 'fo'
and $password == 'bar') {
fwrite(STDOUT, "OK\n");
} else {
// failed miserably
fwrite(STDOUT, "ERR\n");
}
}
?>
Проблема, с которой я столкнулся, заключается в том, что даже после настройки работают только настройки обратного прокси, а не аутентификация. Я что-то здесь делаю не так?
По-видимому, я не понимал, что порядок инструкций конфигурации имеет значение в Squid. У меня сработала следующая конфигурация. Я пишу здесь для тех, кому нужно то же самое,
acl all src all
acl manager proto cache_object
auth_param basic program C:/wamp/bin/php/php5.3.0/php.exe "c:/squid/libexec/authhelper.php"
auth_param basic children 2
auth_param basic realm Enter credential to access the service
auth_param basic credentialsttl 5 hours
acl AuthUsers proxy_auth REQUIRED
http_access allow AuthUsers
http_port 80 accel defaultsite=www.google.com
cache_peer www.google.com parent 80 0 no-query originserver name=myAccel
acl GoogleSite dstdomain www.google.com
http_access allow GoogleSite
cache_peer_access myAccel allow GoogleSite
cache_peer_access myAccel deny all
access_log c:/squid/var/logs/access.log squid
coredump_dir c:/squid/var/cache
Пользовательский помощник аутентификации остался прежним.