

⚠️ 本文不涉及任何“科学上网”内容,仅用于记录我在服务器开发过程中遇到的依赖下载问题。
之前网安的朋友都专门打电话提醒过我,我也不敢乱写。
这里讲的只是一个开发场景下的代理转发技巧,仅涉及客户端问题,不涉及任何服务端内容。
背景:有些烦人的客户#
很多时候,我们的服务器环境要下载外部依赖:
- PHP 用 Composer 拉包
- Node.js 要 npm
- Python 要 pip
- Go 要 go get
- 甚至 Git clone GitHub
理论上,我们都可以找国内代理源,比如:
- Composer 的中国镜像
- npm 的淘宝镜像
- pip 的清华源
不过,国内代理源的状况暂且不论——万一挂了,还得去找别的方案。
问题是,有时候你会遇到这种客户:
“你做的时候给我录个屏,每一步怎么做的我也学一下”
“你这个东西怎么搞好的,跟我讲一下,下次我自己来”
然后等你把他教会了之后,他居然又来一句:
“原来这么就好了,我看你们技术也没多难,我自己搞搞看也挺行哈”
😑😑😑
这一不是我的项目,我只是帮忙解决基础问题。
二来我也没收费,一顿教完没个感谢就算了,还贬低人。
平时有人找我问东西,我还是愿意尽力帮忙,毕竟 解决问题 = 经验积累。
我不讨厌经验积累,顺手帮忙也算交个朋友。
但有时候遇上完全不懂技术、又不尊重别人工作价值的情况……
我就干脆不折腾那些国内代理源了。
遇到环境问题,我就直接让服务器连我自己的服务器做代理:
我这边配置好、调整完,把问题解决掉,然后断掉代理。
大家要是愿意聊天、问问题,我就教;
碰到那种不尊重人的客户,教了也没意义,反而亏了自己的时间。
方案概览#
我自己用来工作的服务器(工作集)网络通畅,于是我在上面开了一个小小的服务端。
需要处理环境问题的服务器(开发机)作为客户端连接它,从而获得一个「临时代理隧道」。
整个过程:
开发机 → 工作机 → 外部依赖源(GitHub、Composer、npm 等)
plaintext我只需要保持一次新的连通即可。
开发服务器配置#
安装客户端(以 Ubuntu 为例):
apt install shadowsocks-libev -y
bash编辑 /etc/shadowsocks-libev/config.json
:
{
"server": "服务器IP",
"server_port": 8399,
"local_address": "127.0.0.1",
"local_port": 1080,
"password": "临时密码",
"timeout": 300,
"method": "chacha20-ietf-poly1305",
"mode": "tcp_and_udp"
}
json启动客户端:
systemctl enable shadowsocks-libev-local
systemctl start shadowsocks-libev-local
bash现在,本地会有一个可用的 SOCKS5 代理:
127.0.0.1:1080
plaintext让工具临时使用这个代理#
Git#
Git 有自己的代理配置:
git config --global http.proxy socks5h://127.0.0.1:1080
git config --global https.proxy socks5h://127.0.0.1:1080
bashShell / 命令行工具#
如果你想让 pip、go get、composer 等命令行工具都走这个代理,可以给当前 shell 设置环境变量:
export https_proxy=socks5h://127.0.0.1:1080
export http_proxy=socks5h://127.0.0.1:1080
export all_proxy=socks5h://127.0.0.1:1080
bash命令执行完后,删除临时设置即可恢复正常网络:
unset all_proxy http_proxy https_proxy
bash如果再也不打算上这台代理服务器,也可以直接删除客户端配置,或者我这边直接改掉在服务端的密码即可。
总结#
这套方案可以:
- 快速帮客户解决依赖下载问题
- 不用折腾国内代理源
- 保留自己对操作环境的控制,避免被“白嫖”
一句话概括就是:
用完即走,帮你搞定,不教你翻车。