小内存也可以,Nginx反代+TLS+WebSocket+web,隐藏/伪装v2ray – outs|网络资源 – 宅…orz

小内存也可以,Nginx反代+TLS+WebSocket+web,隐藏/伪装v2ray – outs|网络资源 – 宅…orz

前言

之前介绍过v2ray利用CDN(cloudflare)的方法,本次介绍的方法和上次有不少的相似之处,本次介绍一下将V2RAY隐藏到正常的网站背后,这样访问域名的时候看到的时候正常的网页,但是使用v2ray链接的话则可以实现梯子的功能。当然如果要实现访问域名出现一个正常网站的功能,你需要一个网站,然而自己建立一个网站也太麻烦了,我们可以反代一下别人的网站,这样访问你域名的时候则可以显示别人网站的页面,并且可以在微型小鸡上实现这样的功能。

准备

本次以debian/ubuntu系统为例,当然centos系统的配置差不了太多。
一个域名:可以申请免费域名,freenom.com,将域名A记录指向服务器。
一台服务器:64M内存就可以用了。服务器购买:Vultr,最低2.5刀一月,注册送10刀,支持支付宝。
一个欲反代的网站:选择一个简单点的网站,因为很多大网站会有安全措施,反代起来有点麻烦。

配置nginx

卸载apache。部分服务商提供的系统模版里面自带了apche,但是我们不需要它,并且它会影响到NGINX的使用,所以这里卸载它。

  1. service apache2 stop
  2. apt-get remove apche* -y

安装nginx
debian/ubuntu

  1. apt-get install nginx -y

创建dhparam.pem文件

  1. mkdir -p/etc/nginx/ssl
  2. openssl dhparam -out /etc/nginx/ssl/dhparam.pem 2048

设置nginx配置文件,vi /etc/nginx/sites-enabled/你的域名.conf

  1. server
  2. {
  3. listen 80;
  4. #listen [::]:80;
  5. server_name 你的域名 ;
  6. #将http重定向到https
  7. return 301 https://你的域名$request_uri;
  8. }
  9. server
  10. {
  11. listen 443 ssl http2;
  12. #listen [::]:443 ssl http2;
  13. server_name 你的域名 ;
  14. ssl on;
  15. ssl_certificate /etc/nginx/ssl/你的域名/fullchain.cer;
  16. ssl_certificate_key /etc/nginx/ssl/你的域名/privkey.key;
  17. ssl_session_timeout 5m;
  18. ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
  19. ssl_prefer_server_ciphers on;
  20. ssl_ciphers "EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5";
  21. ssl_session_cache builtin:1000 shared:SSL:10m;
  22. # openssl dhparam -out /etc/nginx/ssl/dhparam.pem 2048
  23. ssl_dhparam /etc/nginx/ssl/dhparam.pem;
  24. access_log off;
  25. location / {
  26. #向后端传递访客IP
  27. proxy_set_header X-Real-IP $remote_addr;
  28. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  29. #设定需要反代的域名,可以加端口号
  30. proxy_pass http://148.251.3.246:22900/;
  31. #替换网站内容
  32. sub_filter '你反代的对象' '你的域名';
  33. # websocket设定,V2ray使用,这里的设置要和v2ray的设置一致。
  34. location /phpmyadmin/ {
  35. proxy_redirect off;
  36. #proxy_pass http://127.0.0.1:10000;
  37. proxy_http_version 1.1;
  38. proxy_set_header Upgrade $http_upgrade;
  39. proxy_set_header Connection "upgrade";
  40. proxy_set_header Host $http_host;
  41. proxy_intercept_errors on;
  42. if ($http_upgrade = "websocket" ){
  43. proxy_pass http://127.0.0.1:10000;
  44. }
  45. }
  46. }
  47. }

上面设定中的proxy_pass http://148.251.3.246:22900/;就是设定想要反代的域名的地方,148.251.3.246:22900是我挂的一个探针页面,以作测试用,当然你也可以改成其他的网站,比如https://github.com/,如果你反代的https://github.com那么sub_filter '你反代的对象' '你的域名';就是sub_filter 'github.com' 'yourdomain.com';

申请证书

安装acme.sh,一个自动化的Let’s Encrypt证书申请程序。

  1. apt-get install socat -y
  2. curl https://get.acme.sh | sh

以下命令都要在.acme.sh的目录内执行,root用户的在/root/.acme.sh

之前我介绍过用API申请LET’S证书的方法,但是相对来说比较复杂,这里用一种简单的方法,使用nginx方法来申请证书,使用nginx方法申请证书的话,需要先保证有关于这个域名的nginx配置在本例当中,就是上面那个配置文件。
申请证书

  1. acme.sh