Montage

返回

用自己的服务器做一个「临时网络代理」:记录一下开发阶段的一个小技巧Blur image

⚠️ 本文不涉及任何“科学上网”内容,仅用于记录我在服务器开发过程中遇到的依赖下载问题。
之前网安的朋友都专门打电话提醒过我,我也不敢乱写。
这里讲的只是一个开发场景下的代理转发技巧,仅涉及客户端问题,不涉及任何服务端内容。


背景:有些烦人的客户#

很多时候,我们的服务器环境要下载外部依赖:

  • 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": "0.0.0.0",
    "server_port": 8399,
    "password": "临时密码",
    "timeout": 300,
    "method": "chacha20-ietf-poly1305",
    "mode": "tcp_and_udp"
}
json

启动服务:

systemctl enable shadowsocks-libev
systemctl start shadowsocks-libev
bash

到这里工作机就完成了,防火墙记得打开设置好的端口号(比如上面配置里面的8399)


让开发机临时使用这个代理#

开发机跟工作机的前期步骤相同

安装客户端(以 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@config
systemctl start shadowsocks-libev-local@config
bash

之后本地 1080 端口的网络请求就会通过开发机来执行,流程如下:开发机 (127.0.0.1:1080) → 工作机 (8399) → 网络

Git#

Git 有自己的代理配置:

git config --global http.proxy socks5h://127.0.0.1:1080
git config --global https.proxy socks5h://127.0.0.1:1080
bash

Shell / 命令行工具#

如果你想让 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

如果再也不打算上这台代理服务器,也可以直接删除客户端配置,或者我这边直接改掉在服务端的密码即可。


总结#

这套方案可以:

  • 快速帮客户解决依赖下载问题
  • 不用折腾国内代理源
  • 保留自己对操作环境的控制,避免被“白嫖”

一句话概括就是:

用完即走,帮你搞定,不教你翻车。

用自己的服务器做一个「临时网络代理」:记录一下开发阶段的一个小技巧
https://blog.0x0.cat/blog/%E7%94%A8%E8%87%AA%E5%B7%B1%E7%9A%84%E6%9C%8D%E5%8A%A1%E5%99%A8%E5%81%9A%E4%B8%80%E4%B8%AA%E4%B8%B4%E6%97%B6%E7%BD%91%E7%BB%9C%E4%BB%A3%E7%90%86%E8%AE%B0%E5%BD%95%E4%B8%80%E4%B8%8B%E5%BC%80%E5%8F%91%E9%98%B6%E6%AE%B5%E7%9A%84%E4%B8%80%E4%B8%AA%E5%B0%8F%E6%8A%80%E5%B7%A7
作者 Domino
发布时间 2025年10月20日
版权信息 CC BY-NC-SA 4.0
Loading Twikoo...