Я хочу, чтобы весь мой трафик в определенный домен отправлялся через родительский прокси-сервер, вот моя конфигурация squid:
acl localnet src 10.0.0.0/8 # RFC1918 possible internal network
acl localnet src 172.16.0.0/12 # RFC1918 possible internal network
acl localnet src 192.168.0.0/16 # RFC1918 possible internal network
acl localnet src fc00::/7 # RFC 4193 local private network range
acl localnet src fe80::/10 # RFC 4291 link-local (directly plugged) machines
acl SSL_ports port 443
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 # https
acl Safe_ports port 70 # gopher
acl Safe_ports port 210 # wais
acl Safe_ports port 1025-65535 # unregistered ports
acl Safe_ports port 280 # http-mgmt
acl Safe_ports port 488 # gss-http
acl Safe_ports port 591 # filemaker
acl Safe_ports port 777 # multiling http
acl CONNECT method CONNECT
http_access allow manager localhost
http_access allow localhost
http_access allow localnet
http_access deny manager
http_access deny !Safe_ports
http_access deny all
http_access allow localnet
http_access allow localhost
http_access deny all
http_port 3128
hierarchy_stoplist cgi-bin ?
coredump_dir /var/spool/squid
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern -i (/cgi-bin/|\?) 0 0% 0
refresh_pattern . 0 20% 4320
cache_peer XXX.XXX.XXX.XXX parent 3128 0 no-digest
cache_peer_domain XXX.XXX.XXX.XXX .srv-get-my-ip.com
Так http://ip.srv-get-my-ip.com хорошо отправляется через прокси при возврате Current Address: XXX.XXX.XXX.XXX
:
1444889588.794 599 192.168.0.12 TCP_MISS/200 522 GET http://ip.srv-get-my-ip.com/ - FIRSTUP_PARENT/XXX.XXX.XXX.XXX text/html
Но https://ip.srv-get-my-ip.com не отправляется через прокси, так как возвращает мой ip Current Address: YYY.YYY.YYY.YYY
:
1444889762.199 154 192.168.0.12 TCP_MISS/200 6654 CONNECT ip.srv-get-my-ip.com:443 - HIER_DIRECT/AAA.AAA.AAA.AAA -
Как заставить squid обрабатывать второй запрос так же, как и первый?
Здесь важен результат, поэтому, если кто-то может достичь той же цели, используя другой прокси, кроме squid (apache, haproxy или что-то еще), я бы попробовал!
Спасибо!
Проксирование SSL таким образом, как вы описываете, возможно, но это требует[1], что у вас есть сертификаты SSL.
Это функция, а не ошибка, поскольку она предотвращает атаки типа "злоумышленник посередине" на SSL.
Если у вас есть сертификаты, то большинство обратных прокси-серверов будет работать для вас. Вы можете, например, настроить squid для разрыва SSL-соединения, а затем повторно установить его в направлении родительского прокси. Увидеть Документация Squid https
Также обратите внимание на эту страницу:
HTTPS был разработан, чтобы дать пользователям надежду на конфиденциальность и безопасность. Расшифровка туннелей HTTPS без согласия или ведома пользователя может нарушать этические нормы и может быть незаконной в вашей юрисдикции.
Nginx, Сервер трафика Apache, HAProxy, Apache httpd с mod_proxy, и несколько других обратных прокси-серверов способны выполнять завершение SSL за вас.
[1] Есть исключения, если вы можете терпеть небезопасный HTTPS или (что еще интереснее), если вы можете контролировать доверенные сертификаты в клиентах. Но ... на этом пути лежит опасность.