Настройте сквид как обратный прокси позади прозрачного прокси

У меня есть вопрос об установке сквида как обратный прокси позади прозрачного / вперед прокси. В основном то, что я ищу, - возможно ли настроить (B) в следующем:

Клиент (A)-> Сквид как Обратный Прокси (B)-> Сквид как Вперед Прокси (C)-> Серверы Источника В зависимости от Клиентского Запроса URI (D)

В зависимости от клиента запрашивают от (A), (B) мог направить запрос к различным серверам источника (несколько cache_peer строк). Запрос должен пройти (C) для достижения (D), поскольку (C) является единственным выходом из сети к Интернету. Кроме того, логика выяснения, куда перейти ко лжи в (B).

И у нас нет доступа к или управления (A) и (C).

Скажем, у меня есть следующие cache_peer строки в (B), и адрес для (C) "вперед-proxy.example.com:3128".

cache_peer    origin-x.example.com    parent 443 0 no-query originserver ssl
cache_peer    origin-y.example.com    parent 443 0 no-query originserver ssl
cache_peer    origin-z.example.com    parent 443 0 no-query originserver ssl

Каков был бы синтаксис для конфигурирования (B) для использования "вперед-proxy.example.com:3128" (C) в качестве вперед прокси к серверам источника (D)?

Спасибо!

1
задан 14 November 2014 в 04:20
1 ответ

Да, это возможно, хотя, вероятно, не так, как вы думаете.

Вы много говорите о C, как будто это имеет значение; так как вы не имеете контроля над этим, вы должны перестать беспокоиться об этом. Если нет более одного C, и это можно использовать для выбора исходных серверов, то C совершенно не имеет значения... это просто мешает (и действительно мешает вам использовать более прямые методы выбора исходных серверов).

В этом сценарии вы не определяете/не можете определить исходный сервер с помощью директив cache_peer; cache_peer настраивает, как Squid взаимодействует с другими прокси-серверами, а не с исходными серверами. Так как вы не можете контролировать средний Squid, вы не можете осуществлять выбор непосредственно на исходном сервере; т.е. forward proxy всегда будет обращаться к доменному имени, которое вы запросили, и это не будет основано на ваших критериях выбора в B. (Если бы у вас был контроль над другим Squid, у вас было бы больше вариантов. )

Один из способов достичь желаемого - дать вашим исходным серверам дополнительные имена, чтобы ваш первый Squid (B) мог переписывать запросы, основанные на URI, на новые доменные имена, а средний squid мог делать запросы, основанные на доменном имени.

Вы можете использовать опцию url_rewrite_helper, чтобы использовать программу переписывания для изменения URL любым выбранным вами способом. На моем месте я бы, вероятно, создал новое имя для каждого исходного сервера (a, b, c и т.д.), а затем переписал бы его, основываясь на любых данных, которые у вас есть к этим именам. Итак, если ваш URI "http://domain.tld/a/image.png", вы могли бы переписать его на "http://a.domain.tld/image.png", и "http://domain.tld/b/image.png" на "http://b.domain.tld/image.png".

Вам, конечно, нужно будет настроить исходные серверы на ответы на эти новые домены и, возможно, настроить их на восстановление URI из получаемого с боеприпасами.

Ссылки:

http://www. squid-cache.org/Doc/config/url_rewrite_program/

И, информация о переписывающей программе и примеры переписывания:

http://wiki.squid-cache.org/Features/Redirectors#Using_a_re-writer_to_mangle_the_URL_as_it_passes

Вы также можете пропустить то, что первый squid определил происхождение, и позволить исходному приложению распределить ваши запросы по доменам так, как это имеет смысл, сказав клиенту, чтобы он запросил с любого сервера, который ему нужен. Надеюсь, это поможет.

0
ответ дан 4 December 2019 в 08:23

Теги

Похожие вопросы