ss+websocket+tls+nginx配置伪装网站

让你的源站服务器伪装成普通http服务器

准备工作

  • 安装好docker
  • 准备好域名、做好解析、申请好证书
  • 安装nginx

安装

创建配置文件存储目录

1
mkdir -p /etc/shadowsocks-libev

使用vim打开/etc/shadowsocks-libev/config.json

1
2
3
4
5
6
7
8
9
10
11
12
{
"server":"127.0.0.1",
"server_port":2052,
"password":"P@ssword2023",
"timeout":300,
"method":"aes-128-gcm",
"fast_open":false,
"nameserver":"1.0.0.1",
"mode":"tcp_and_udp",
"plugin":"v2ray-plugin",
"plugin_opts":"server;path=/admin;loglevel=none"
}

配置说明:

  • port、password、path可以自定义
  • port、path需与接下来的nginx配置中保持一致
  • 很多vps默认防火墙全开的,ss只监听了本地的端口,没有开放到公网
  • nameserver可以自定义,尽量用国外的吧

拉取docker镜像

1
docker pull teddysun/shadowsocks-libev

运行服务

1
docker run -d --network host --name ss-libev --restart=always -v /etc/shadowsocks-libev:/etc/shadowsocks-libev teddysun/shadowsocks-libev

安装nginx

我的服务器是centos的,如果是Ubuntu安装命令有差异

1
yum install nginx -y

启动nginx服务

1
systemctl start nginx

查看nginx运行状态

1
systemctl status nginx

查看状态如下

1
2
3
4
5
6
7
8
9
10
11
12
● nginx.service - nginx - high performance web server
Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; vendor preset: disabled)
Drop-In: /etc/systemd/system/nginx.service.d
└─network-online.conf, nofile.conf, oom-adjust.conf
Active: active (running) since 四 2023-05-25 10:54:50 BST; 8 months 29 days ago
Docs: http://nginx.org/en/docs/
Main PID: 25268 (nginx)
Tasks: 2
Memory: 5.7M
CGroup: /system.slice/nginx.service
├─ 6931 nginx: worker process
└─25268 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf
  • 创建proxy配置,/etc/nginx/conf.d/ss.conf
1
vim /etc/nginx/conf.d/ss.conf

配置内容如下

配置中的证书文件可以是自己提前申请的,我这里使用的是acme.sh自动申请和更新证书

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
server {
listen 443 ssl;
server_name admin.domain.com;
ssl_certificate /存放证书的路径/domain.com.cer; # pem文件的路径
ssl_certificate_key /存放证书的路径domain.com.key; # key文件的路径
ssl_session_timeout 5m; #缓存有效期
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #安全链接可选的加密协议
ssl_prefer_server_ciphers on; #使用服务器端的首选算法
location /admin {
if ($http_upgrade != "websocket") {
return 404;
}
proxy_redirect off;
proxy_pass http://127.0.0.1:2052;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}

}

重新载入nginx配置

1
nginx -s reload

客户端配置

下载v2ray插件

v2ray插件

根据自己系统选择对应的插件

把解压出来的文件重命名为v2ray-plugin,并移动到ss的文件夹(以windows为例)

v2ray插件

配置ss客户端

ss客户端

插件程序名字要和前面下载并重命名的保持一致,去掉.exe后缀

插件选项可以参考下面的配置

1
tls;path=/admin;host=ss.domain.com;loglevel=none

这里有一个path和host需要注意,和前面不一致会导致连接失败

扩展

  • 除了v2ray-plugin还有xray_plugin
  • 因为走的事https协议,可以在前面加CDN来隐藏源服务器的IP
  • PAC规则不友好或者不想开代理的访问ChatGPT的时候可以专门下载一个chrome的开发版本配合SwitchyOmega插件,这样打开开发版本的时候都是走代理的就不会出现忘记开代理的尴尬了

ss+websocket+tls+nginx配置伪装网站

https://blog.itbuf.com/post/42398898.html

作者

ItBuf

发布于

2024-02-22

更新于

2024-03-16

许可协议

评论