init
This commit is contained in:
9
proxy/Dockerfile
Normal file
9
proxy/Dockerfile
Normal file
@@ -0,0 +1,9 @@
|
||||
FROM alpine:3.19
|
||||
RUN apk add --no-cache squid \
|
||||
&& mkdir -p /var/log/squid /var/cache/squid /var/run/squid \
|
||||
&& chown -R squid:squid /var/log/squid /var/cache/squid /var/run/squid
|
||||
COPY squid.conf /etc/squid/squid.conf
|
||||
COPY entrypoint.sh /entrypoint.sh
|
||||
RUN chmod +x /entrypoint.sh
|
||||
EXPOSE 3128
|
||||
ENTRYPOINT ["/entrypoint.sh"]
|
||||
15
proxy/entrypoint.sh
Normal file
15
proxy/entrypoint.sh
Normal file
@@ -0,0 +1,15 @@
|
||||
#!/bin/sh
|
||||
set -e
|
||||
mkdir -p /etc/squid/conf.d
|
||||
# Родительский прокси: host и port из .env (генерируем одну строку конфига)
|
||||
if [ -n "$EXTERNAL_PROXY_HOST" ] && [ -n "$EXTERNAL_PROXY_PORT" ]; then
|
||||
_auth=""
|
||||
if [ -n "$EXTERNAL_PROXY_USER" ] && [ -n "$EXTERNAL_PROXY_PASS" ]; then
|
||||
_auth=" login=${EXTERNAL_PROXY_USER}:${EXTERNAL_PROXY_PASS}"
|
||||
fi
|
||||
echo "cache_peer ${EXTERNAL_PROXY_HOST} parent ${EXTERNAL_PROXY_PORT} 0 no-query default name=parent${_auth}" > /etc/squid/conf.d/parent.conf
|
||||
else
|
||||
echo "# Внешний прокси не задан (EXTERNAL_PROXY_HOST/PORT). Заполни .env и перезапусти." > /etc/squid/conf.d/parent.conf
|
||||
echo "cache_peer no-proxy.invalid parent 1 0 no-query default name=parent" >> /etc/squid/conf.d/parent.conf
|
||||
fi
|
||||
exec squid -f /etc/squid/squid.conf -N
|
||||
39
proxy/squid.conf
Normal file
39
proxy/squid.conf
Normal file
@@ -0,0 +1,39 @@
|
||||
# Локальный прокси для n8n: часть доменов — через внешний прокси, остальное — напрямую
|
||||
# Внешний прокси задаётся в .env: EXTERNAL_PROXY_HOST, EXTERNAL_PROXY_PORT
|
||||
# Домены для внешнего прокси — список ниже (acl to_parent_proxy)
|
||||
|
||||
http_port 3128
|
||||
|
||||
# Доступ только из Docker-сети (n8n)
|
||||
acl localnet src 10.0.0.0/8
|
||||
acl localnet src 172.16.0.0/12
|
||||
acl localnet src 192.168.0.0/16
|
||||
|
||||
acl SSL_ports port 443
|
||||
acl Safe_ports port 80 443
|
||||
acl CONNECT method CONNECT
|
||||
|
||||
# Подключаем сгенерированный конфиг с cache_peer (host/port из env)
|
||||
include /etc/squid/conf.d/parent.conf
|
||||
|
||||
# Домены, которые идут через внешний прокси (остальные — напрямую)
|
||||
acl to_parent_proxy dstdomain .openai.com
|
||||
acl to_parent_proxy dstdomain .anthropic.com
|
||||
acl to_parent_proxy dstdomain .googleapis.com
|
||||
# Добавь при необходимости: .azure.com, .aws.amazon.com и т.д.
|
||||
|
||||
# Родительский прокси только для этих доменов
|
||||
cache_peer_access parent allow to_parent_proxy
|
||||
cache_peer_access parent deny all
|
||||
|
||||
# Важно: CONNECT (HTTPS) по умолчанию Squid может слать напрямую, а не в parent.
|
||||
# Запрещаем прямой доступ для этих доменов — только через parent.
|
||||
never_direct allow to_parent_proxy
|
||||
|
||||
# Таймауты при работе через родительский прокси (увеличить при медленном прокси)
|
||||
connect_timeout 30 seconds
|
||||
read_timeout 60 seconds
|
||||
|
||||
# Разрешаем запросы из нашей сети
|
||||
http_access allow localnet
|
||||
http_access deny all
|
||||
Reference in New Issue
Block a user