tinyproxy(似乎不稳定)
步骤 1:创建 tinyproxy.conf
配置文件
首先,在与 docker-compose.yml
文件相同的目录下,创建一个名为 tinyproxy.conf
的文件,并填入以下内容。这个配置已经为您设置好了:
- 监听所有网络接口的
8888
端口。 - 允许通过
CONNECT
方法连接443
(HTTPS) 和80
(HTTP) 端口。 - 设置了基础认证的用户名为
test
,密码为test123
。 - 允许任何客户端连接(通过注释掉
Allow
配置实现)。
tinyproxy.conf
# --- 用户与端口 ---
User nobody
Group nobody
Port 8888
# --- 日志与进程 ---
LogLevel Info
# --- 认证 ---
# Basic 认证,格式:BasicAuth <user> <password>
# 将下面的 test 和 test123 替换为您自己的用户名和密码
BasicAuth test test123
# --- 连接设置 ---
Timeout 600
MaxClients 100
# --- 关键:允许通过 CONNECT 方法访问的端口 ---
# 标准 Web 端口
ConnectPort 80 # HTTP
ConnectPort 443 # HTTPS
# 常见备用 Web 端口
ConnectPort 8000
ConnectPort 8080
ConnectPort 8888
ConnectPort 8443 # 备用 HTTPS
# 常见开发端口
ConnectPort 3000
ConnectPort 5000
# 其他代理服务端口
ConnectPort 3128 # Squid
ConnectPort 1080 # SOCKS
# 其他有用的端口
ConnectPort 22 # SSH
ConnectPort 563 # SNEWS (已在您的配置中)
# --- 隐私与安全 (最佳实践) ---
XTinyproxy No
DisableViaHeader Yes
步骤 2:修改 docker-compose.yml
文件
接下来,修改您的 docker-compose.yml
文件,内容如下。主要改动包括:
- 将
image
更改为stilleshan/tinyproxy:latest
。 - 移除
environment
和command
部分,因为相关配置已移至tinyproxy.conf
文件中。 - 添加
volumes
部分,将我们刚刚创建的tinyproxy.conf
文件挂载到容器内。
docker-compose.yml
version: '3.8'
services:
tinyproxy:
# 1. 更换为 stilleshan/tinyproxy 镜像
image: stilleshan/tinyproxy:latest
container_name: simple-forward-proxy
ports:
- "8888:8888" # 将主机的8888端口映射到容器的8888端口
# 2. 添加 volumes,挂载配置文件
# 将宿主机当前目录下的 tinyproxy.conf 文件挂载到容器的 /etc/tinyproxy/tinyproxy.conf
volumes:
- ./tinyproxy.conf:/etc/tinyproxy/tinyproxy.conf:ro
restart: unless-stopped
注意: :ro
表示以只读(read-only)模式挂载,这是一个好习惯,可以防止容器意外修改配置文件。
步骤 3:启动容器
现在,确保 docker-compose.yml
和 tinyproxy.conf
这两个文件在同一个目录下,然后在该目录中运行以下命令来启动服务:
docker-compose up -d
这样,您就成功地切换到了 stilleshan/tinyproxy
镜像,并通过挂载配置文件的方式实现了对 80 端口的支持以及自定义账号密码。
squid
docker compose
version: '3.8'
services:
squid:
# 使用一个稳定且流行的 Squid 镜像
image: ubuntu/squid
container_name: squid-open-proxy
ports:
# 将你服务器的 31128 端口映射到容器的 3128 端口
- "31128:3128"
volumes:
# 将我们自定义的配置文件挂载到容器内部
- ./squid.conf:/etc/squid/squid.conf
# 创建一个具名数据卷来持久化缓存,可以提高性能
- squid_cache:/var/spool/squid
restart: unless-stopped
# 定义具名数据卷
volumes:
squid_cache:
squid.conf
# =================================================================
# 访问控制(ACL)设置
# =================================================================
# 定义一个名为 'all' 的访问列表,匹配所有源 IP 地址
acl all src all
# 允许所有 http 协议的访问
http_access allow all
# =================================================================
# 端口设置
# =================================================================
# Squid 监听的端口(与 docker-compose.yml 中的容器端口对应)
http_port 3128
# =================================================================
# 隐私与匿名化设置 (核心部分)
# =================================================================
# 关闭 Via 请求头,不暴露代理服务器信息
via off
# 删除或伪造 Forwarded-For 请求头,隐藏客户端的真实 IP
# "delete" 会彻底删除该头部
# "truncate" 会保留最后一个IP,但会隐藏前面的链路
forwarded_for delete
# 额外确保相关的头部信息被拒绝,加强匿名性
request_header_access X-Forwarded-For deny all
request_header_access From deny all
request_header_access Referer deny all
request_header_access Server deny all
request_header_access User-Agent deny all
request_header_access WWW-Authenticate deny all
request_header_access Link deny all
# =================================================================
# 其他推荐设置
# =================================================================
# 当 Squid 无法连接到原始服务器时,返回一个通用的错误页面
# 这可以防止暴露有关您网络的内部信息
deny_info TCP_RESET all
# 关闭 DNS 查询日志,减少信息记录
dns_v4_first on