Как обрабатывать повторяющиеся загрузки некоторых конкретных больших файлов, которые поступают из Интернета

Мы собираемся предложить приложение, которое позволит нашим клиентам загружать аудио-путеводитель для замка, в котором я работаю.

Мне бы очень хотелось, чтобы у каждого пользователя, загружающего приложение (через мой бесплатный Wi-Fi, который мы предлагаем) в наш замок, загружаем все аудиофайлы с сервера приложений, который находится за пределами нашего замка (он находится за пределами нашей сети).

Таким образом, результаты моих исследований показывают, что мне нужно создать прокси-сервер для кеширования файлов, которые используются очень часто (в моем случае данные MP3), так что я могу сохранить бесплатную пропускную способность WiFi для «динамических» данных.

Мне нужно сделать это, чтобы

  • Control / Cage загружает мою сеть, поэтому я не влияю на работу своей офисной сети.
  • Держите свободный WiFi плавно. У нас есть много клиентов и предлагается бесплатный Wi-Fi. Наша внутренняя сеть работает с 10 Гбит, а пропускная способность Интернета составляет около 1 Гбит.

Поэтому использование прокси для распространения файлов в формате MP3 и необходимость повторного загрузки их из Интернета – это то, что я ищу.

Вопрос :

  • Является ли Squid инструментом, который я ищу, или что-то лучше?
  • Как заставить всех пользователей бесплатного WiFi автоматически использовать прокси.
  • [Необязательно] Ваш опыт в этом случае использования.

Для этого можно использовать Squid, однако есть некоторые проблемы, о которых следует помнить:

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

  • Ваше приложение должно использовать HTTP для извлечения файлов, иначе вы будете иметь ошибки сертификата, если ваш прокси пытается перехватить HTTPS-соединения, если вы не создадите сертификат для прокси-сервера и не доверяете этому приложению, а затем все остальное, кроме вашего приложения, также будет выбросить HTTPS-сертификат, и вы ничего не можете с этим поделать, как правило, перехват HTTPS – это плохая практика, если вы не даете понять своим пользователям и не устанавливаете сертификат.

Чтобы заставить трафик клиента проходить через Squid без какой-либо конфигурации с их стороны, вам нужно настроить Squid как прозрачный прокси-сервер, а затем использовать некоторые магии брандмауэра для пользователей шлюза, чтобы использовать Интернет для перенаправления всего HTTP-трафика на ваш Squid-сервер :

http_port 3128 intercept # enable transparent proxy mode 

Что касается конфигурации шлюза, то это зависит от того, какой брандмауэр там, для IPtables что-то вроде этого должно работать, если ваш сервер Squid находится за тем же шлюзом, что и ваши пользователи:

 iptables -t nat -A PREROUTING -s <squid_server_IP> -p tcp --dport 80 -j ACCEPT # accept HTTP traffic from the Squid iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination <squid_server_IP>:3128 # redirect your user's HTTP traffic to Squid iptables -t nat -A POSTROUTING -j MASQUERADE # probably not needed since your gateway already has this 

Вы должны взглянуть на документацию Squid , у них есть несколько примеров для настройки брандмауэров Entreprise для этого.