介绍
之前部署ws+tls都是借助宝塔的,为啥用宝塔呢?因为小白,因为简单……但是小白手上有内存只有两三兆的小鸡,装宝塔有点难为他了,况且杀鸡焉用牛刀,我的需求就是ws+tls并部署个伪装站点而已,一个nginx就够了,那我们今天就来看看手动安装并配置nginx。
为什么要纯手动安装呢?一是知道每一步的操作是代表啥,二是学习,记录下学习的过程。
实操
安装v2ray/xray
小白这里采用docker版,具体可参考本教程docker安装v2ray/xray部分:docker配合宝塔部署ws+tls并搭建伪装网站,这里就不再赘述。不愿意用docker版的,请自行安装其他版本,反正配置文件都是一样的。
安装nginx
我这里采用的Debian系统,安装命令如下:
apt-get update apt-get install nginx
修改nginx配置文件
备份原来的配置文件:
mv /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bk
新建配置文件:
vi /etc/nginx/nginx.conf
模板如下:
user root; worker_processes 1; #error_log /etc/nginx/error.log warn; #pid /var/run/nginx.pid; events { worker_connections 1024; } http { include /etc/nginx/mime.types; default_type application/octet-stream; log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; #access_log /etc/nginx/access.log main; sendfile on; #tcp_nopush on; keepalive_timeout 120; client_max_body_size 20m; #gzip on; server { # 服务器端口使用443,开启ssl, 这里ssl就是上面安装的ssl模块 listen 80; listen [::]:80 ipv6only=on; listen 443 ssl http2; listen [::]:443 ssl ipv6only=on http2; # 域名,多个以空格分开 server_name example.example.com; //请改成自己的域名 index index.php index.html index.htm default.php default.htm default.html; root /usr/share/nginx/html; //站点目录,可自行设置 #SSL-START SSL相关配置,请勿删除或修改下一行带注释的404规则 #error_page 404/404.html; #HTTP_TO_HTTPS_START if ($server_port !~ 443){ rewrite ^(/.*)$ https://$host$1 permanent; } #HTTP_TO_HTTPS_END ssl_certificate /etc/nginx/cert/example.com.crt; //改成自己的证书目录 ssl_certificate_key /etc/nginx/cert/example.com.key; //改成自己密钥目录 ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3; ssl_ciphers EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5; ssl_prefer_server_ciphers on; ssl_session_cache shared:SSL:10m; ssl_session_timeout 10m; add_header Strict-Transport-Security "max-age=31536000"; error_page 497 https://$host$request_uri; #SSL-END #ws反代部分,location路径和proxy_pass端口请与v2ray配置文件保持一致 location /bueEnIYC/ { if ($http_upgrade != "websocket") { return 404; } proxy_redirect off; proxy_pass http://127.0.0.1:29569; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header Host $host; # Show real IP in v2ray access.log proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } } }
重启nginx
systemctl restart nginx
部署伪装站点
我们直接采用/usr/share/nginx/html/为站点目录,首先删除目录中的index.html文件:
rm /usr/share/nginx/html/index.html -rf
随便找个网页文件扔进去,可以去mack-a大佬的仓库里随便拖一个站点文件下来。
wget -O web.zip https://github.com/mack-a/v2ray-agent/raw/master/fodder/blog/unable/html8.zip unzip web.zip
好了大功告成。
备注
1.nginx配置文件已经监听了ipv4和ipv6,本地支持ipv6的可以尝试直连通过ipv6连接
2.其实使用nginx还是有点大材小用了,如果没有其他需求也可以采用更为轻量的caddy,具体配置请自行研究
3.这里是简单的采用了静态网页作为伪装站点,有能力的小伙伴也可自行反代其他网站。其实最好的伪装网站应该是个人网盘,具体的大佬已经解释过,原因如下:伪装网站说明
伪装网站的选择
使用VPS自建Xray代理在流量的常见特征有 单点性 、 大流量性 、 长时间性 、 GO-TLS指纹特性 、 出入相同性 等。
- 单点性 指使用的人少,一般只有自己,即使分享给朋友,一般也不会太多。
- 长时间性 不单指时间长,也指坚持一个月或一年每天都使用代理。
- GO-TLS指纹特性 在不伪装浏览器指纹的前提下,从TLS握手信息中可以判断出客户端是GO程序,详见此处。
- 出入相同性 指入VPS和出VPS的流量在时间和大小上几乎相同,比如使用Xray代理浏览
BiliBili
,从BiliBili
到VPS(Xray服务端)
的流量,和从VPS
到Xray客户端
的流量在时间上和大小上是几乎相同的。出入相同性 是所有代理的通病,目前还没有太好的伪装方法,但是因为VPS不在大陆,如果不是被特别关注的对象,一般不会被审查。既然使用Xray进行代理的全部流量都将伪装成访问这个网站的流量,那么我们选择伪装网站就是要尽量选择流量特征与Xray代理的流量特征相同的网站。
- Cloudreve 和 Nextcloud
他们都是个人网盘,个人网盘可以理解为使用自己的VPS搭建起来的百度网盘,区别就是文件都存放在VPS中,并且自己是网盘的管理员。
个人网盘与上面所说特征的吻合数最多,包括 单点性 、 大流量性 、 GO-TLS指纹特性 、 长时间性 等,建议选择。
关于GO-TLS指纹特性,在不伪装浏览器指纹的前提下,将alpn设置为http/1.1,可以伪装成GO语言实现的WebDav客户端,详见此处。