Мой обратный прокси-сервер Squid принимает только HTTPS-запросы. Как можно быстрее перенаправить / переписать HTTP-запрос на https?
Поэтому, если пользователь посещает http://foo.server.com
, он должен быть автоматически перенаправлен на https://foo.server.com
Один из способов - заставить исходный сервер сделать редирект, но кажется более эффективным заставить Squid сделать это. Есть несколько подходов, но использование deny_info кажется самым простым.
В конфигурационном файле squid.conf:
acl PORT80 myport 80
acl MYSITE dstdomain foo.server.com
http_access deny PORT80 MYSITE
deny_info 301:https://foo.server.com%R MYSITE
На первый взгляд, оператор http_access просто запрещает доступ к HTTP-версии вашего сайта. Однако из-за утверждения deny_info Squid будет перенаправлять пользователей на альтернативный сайт (в данном случае на HTTPS версию), а не просто выдавать сообщение об отказе в доступе.
Тэг %R
приводит к тому, что путь URL запроса будет включен в редирект, так что если пользователи попытаются зайти на http://foo. server.com/bar
, то они получат направление на https://foo.server.com/bar
, а не только на https://foo.server.com
.
Полный список тегов формата URL доступен в документации Squid: http://www.squid-cache.org/Doc/config/deny_info/
Порядок операторов acl важен, так как Squid запоминает только последний http_access deny
и ищет deny_info
, соответствующий этому acl.