前面的文章讲到过如何搭建Shadowsocks+V2ray-plugin,但是由于使用了一键安装脚本,当服务器上已经有HTTP服务器在运行时,必然会出现端口冲突的问题。为了使两者能共存,我们来手动安装并设置反向代理。
p.s. 本文使用的环境为Ubuntu18 + Apache2.4,且默认已有一个域名指向了当前服务器。
安装Shadowsocks
我们使用秋水逸冰的一键安装脚本来安装Shadowsocks:
wget --no-check-certificate -O shadowsocks-all.sh https://raw.githubusercontent.com/teddysun/shadowsocks_install/master/shadowsocks-all.sh
chmod +x shadowsocks-all.sh
./shadowsocks-all.sh 2>&1 | tee shadowsocks-all.log
注意安装的时候选择安装Shadowsocks-libev版本,并且不需要安装simple-obfs。
其余选项按照提示自定义即可。其中path我用了根目录/
安装完后有几个管理命令可能会用到:
- 启动/关闭/重启/查看运行状态:
/etc/init.d/shadowsocks-libev start
/etc/init.d/shadowsocks-libev stop
/etc/init.d/shadowsocks-libev restart
/etc/init.d/shadowsocks-libev status
- 查看日志(由于找不到日志存放地址,直接查看系统日志)
tail -f /var/log/syslog
- 手动运行(实时查看日志,用于测试,ctrl+c即可停止运行)
/usr/local/bin/ss-server -v -c /etc/shadowsocks-libev/config.json
- 修改配置文件
nano /etc/shadowsocks-libev/config.json
安装v2ray-plugin
进入v2ray-plugin的release页面,找到需要的版本并下载。我用的是linux-amd64-v1.3.1:
wget https://github.com/shadowsocks/v2ray-plugin/releases/download/v1.3.1/v2ray-plugin-linux-amd64-v1.3.1.tar.gz
下载完成后解压:
tar -zxvf v2ray-plugin-linux-amd64-v1.3.1.tar.gz
并移动到其他地方,如/var/www/gfw,重命名为v2ray-plugin
mv v2ray-plugin_linux_amd64 /var/www/gfw/v2ray-plugin
修改权限:
chmod 755 /var/www/gfw/v2ray-plugin
修改Shadowsocks的配置文件,加入如下两行:
"plugin":"/var/www/gfw/v2ray-plugin",
"plugin_opts":"server;path=/;mode=websocket;host=指向服务器的域名"
如果path不是根目录,根据自己的实际情况修改,如path=/test
重启Shadowsocks,或关闭Shadowsocks后手动启动看一下日志是否正常。
安装Certbot
certbot可以用来申请免费SSL证书。官网有详细的安装步骤。对于Ubuntu18 + Apache2,只需如下命令:
snap install --classic certbot
ln -s /snap/bin/certbot /usr/bin/certbot
Apache设置
首先需要开启Apache模块:
a2enmod ssl
a2enmod proxy
a2enmod proxy_wstunnel
a2enmod proxy_http
a2enmod rewrite
a2enmod headers
新建一个虚拟主机:
nano /etc/apache2/site-available/gfw.conf
输入如下内容:
<VirtualHost *:80>
ServerName 指向服务器的域名
ServerAdmin [email protected]
DocumentRoot /var/www/gfw
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
保存并启用:
a2ensite
从列表中选择刚刚新建的主机,并重新加载apache使其生效:
systemctl reload apache2
通过Certbot获取证书:
certbot --apache
选择刚刚新建的主机,将会自动获取证书。再次提醒:域名必须指向当前服务器IP
完成后,修改虚拟主机配置文件:
nano /etc/apache2/site-available/gfw-le-ssl.conf
在DocumentRoot下面新加下面内容:
ProxyRequests off
ProxyPass / ws://127.0.0.1:9000/
ProxyAddHeaders Off
ProxyPreserveHost On
RequestHeader set Host %{HTTP_HOST}s
RequestHeader set X-Forwarded-For %{REMOTE_ADDR}s
其中9000为Shadowsocks使用的端口号,根据自己的实际情况自行修改。
如果shadowsocks中配置的path不是根目录,根据实际情况修改,如:
ProxyRequests off
ProxyPass /test ws://127.0.0.1:9000/test
ProxyAddHeaders Off
ProxyPreserveHost On
RequestHeader set Host %{HTTP_HOST}s
RequestHeader set X-Forwarded-For %{REMOTE_ADDR}s
重新加载apache使其生效:
systemctl reload apache2
客户端配置
在Clash中该节点配置如下:
- name: "随意"
type: ss
server: 指向服务器的域名
port: 443
cipher: 加密方式
password: "密码"
plugin: v2ray-plugin
plugin-opts:
mode: websocket
tls: true
skip-cert-verify: true
host: 指向服务器的域名
path: "/或者自定义的path如/test"
mux: true
在其他客户端中,插件选择v2ray-plugin,插件选项为:
tls;host=指向服务器的域名
套Cloudflare
首先你得有一个Cloudflare账号。
在Cloudflare后台,找到Workers:

选择Manage Workers>Create a Worker,在新窗口的Script中输入下面代码:
addEventListener(
"fetch", event => {
let url = new URL(event.request.url);
url.hostname = "指向服务器的域名";
url.protocol = "https";
let request = new Request(url, event.request);
event.respondWith(
fetch(request)
)
}
)

点击左上角gfw2的地方可以自定义子域名。
选择Save and Deploy即可完成部署。
在客户端中,用左上角的域名替代原本的域名即可。
自选Cloudflare的IP(可选)
如果对套上Cloudflare后的速度不满意,可以通过自选Cloudflare的IP来加速。
下载此项目下的工具,直接运行其中的二进制文件即可进行测速,完成后在同目录下会生成结果文件result.csv,挑选其中最满意的IP,在本地hosts文件中新加一行:
IP Worker应用的域名
近期评论