Ubuntu 22.04配置3proxy HTTP代理遇连接拒绝错误,及用户密码配置文件位置咨询
看起来你在配置3proxy HTTP代理时碰到了两个棘手的问题:curl: (7) Connection refused连接错误,还有找不到用户密码的存储位置,我来帮你一步步排查和解决。
一、解决「curl: (7) Connection refused」错误
这个错误通常意味着3proxy服务没正常运行,或者端口没被正确监听,我们从几个关键点排查:
1. 先确认3proxy服务状态
首先检查服务是否在运行:
sudo systemctl status 3proxy
如果显示服务未启动,先启动它:
sudo systemctl start 3proxy
要是想让它开机自动启动,执行:
sudo systemctl enable 3proxy
如果启动失败,查看系统日志找具体原因:
sudo journalctl -u 3proxy
2. 修正配置文件里的路径错误
你的/etc/3proxy/3proxy.cfg里有好几处路径写错了,这很可能导致3proxy加载配置失败:
- 把
config /conf/3proxy.cfg改成config /etc/3proxy/3proxy.cfg - 把
monitor /conf/3proxy.cfg改成monitor /etc/3proxy/3proxy.cfg - 把
users $/conf/passwd改成users $/etc/3proxy/passwd(这个和后面的密码文件位置直接相关) - 如果你没有
/conf/counters和/conf/bandlimiters这两个文件,直接注释掉这两行include指令,不然3proxy启动会报错
另外,配置里的counter /count/3proxy.3cf需要对应的目录存在,先创建目录并设置正确的权限:
sudo mkdir -p /count sudo chown 3proxy:3proxy /count
3. 检查端口是否被正确监听
修改配置后重启服务,然后用下面的命令检查3128端口是否被3proxy监听:
ss -tulpn | grep 3128
如果输出里能看到3proxy进程监听0.0.0.0:3128或者你的内网IP192.168.1.47:3128,说明端口监听正常。
4. 检查默认防火墙(Ubuntu自带ufw)
你说没安装防火墙软件,但Ubuntu 22.04默认自带了ufw,可能处于启用状态,阻止了外部访问3128端口。先检查ufw状态:
sudo ufw status
如果显示active,就添加端口允许规则:
sudo ufw allow 3128/tcp
5. 调整配置规则顺序(可选但更规范)
3proxy的规则是按顺序匹配的,你的配置里最后一行的allow会覆盖前面的规则,其实可以简化一下规则部分:
auth strong deny * * 127.0.0.1 allow * * * 80,443 proxy -n -p 3128 -a flush
这样既允许HTTP(80)和HTTPS(443)流量,又避免规则冗余。
二、用户密码配置文件的位置
你用add3proxyuser.sh添加的用户密码,默认是存储在/etc/3proxy/passwd文件里的。之前配置里的users $/conf/passwd路径错误,改成users $/etc/3proxy/passwd后,3proxy就能正确读取用户认证信息了。
你也可以直接查看这个脚本的内容,确认它的写入路径:
cat /usr/bin/add3proxyuser.sh
一般这个脚本会用3proxy自带的工具生成加密密码,写入到/etc/3proxy/passwd文件中。
最后测试
修改完所有配置并重启3proxy后,再用你的curl命令测试:
curl -x http://username:password@192.168.1.47:3128 https://ifconfig.io
如果一切正常,应该能返回代理服务器的IP地址了。
备注:内容来源于stack exchange,提问作者Anatoly Frolov

