V2Ray翻墙完全教程(WS+TLS+Web)【请更新V2Ray客户端至4.23.2以上】

使用CN2/CN2GIA顶级线路,支持Shadowsocks/V2ray科学上网,支持支付宝付款,每月仅需 5 美元
## 加入品葱精选 Telegram Channel ##

前言

本文是搭建V2Ray服务器(ws+tls+web)的完整教程。除了搭建V2Ray+ws+tls+web的过程,还包括配置CDN隐藏IP,打开BBR加速,以及简单配置防火墙防探测。最近(2020年初开始)防火墙加大了封杀VPN的力度,很多SS,SSR,纯VMess都开始间歇掉线,有些代理甚至直接被封IP。如果你打算自己搭建翻墙服务,强烈推荐V2Ray+ws+tls+web(CDN可选)一步到位。

本文面向小白,你只要会购买虚拟主机,会使用SSH连接服务器,那么看懂本教程就毫无压力。当然如果有搭建SS/SSR的经验,就更容易看懂了。建议能看懂本教程的,尽量购买VPS自建翻墙服务。按照本文搭建实在有困难的用户,可以考虑迷雾通或其它外资VPN。

不推荐使用一键脚本,很多一键脚本都存在安全隐患,轻则屏蔽掉几个网站,重则把你的服务器变成“肉鸡”(即黑客攻击别人电脑的跳板)。另外,就算用脚本搭建服务器,本文中的大部分操作,比如购买域名,配置域名解析等等,脚本无法自动完成。你恐怕还要亲自购买域名,亲自配置域名解析,亲自登录VPS执行脚本。本文中的方法只比一键脚本多出几步,但是可以大大降低安全风险。

自建V2Ray服务器首先要购买VPS(虚拟主机),为避免广告嫌疑,正文中不推荐VPS,我会在评论中补充一些常见的外资VPS。一般而言,自建服务的成本远远低于机场,大多数VPS每个月花费20-30元左右,流量1TB/月,有些外资VPS价格低到10-20元,甚至每月不到10元。如果愿意折腾,还可以用免费的谷歌云。此外,自建服务没有客户端数量限制,如果多人分摊成本,价格就更便宜了。

V2Ray+ws+tls+web是目前最稳定的翻墙技术之一,即使在六四、十一也稳如泰山。和SSR的流量混淆不同,V2Ray+ws+tls用真正的https流量翻墙,没有必要做任何混淆。在防火长城看来,你的流量和不计其数的https流量没有任何区别。但是,如果有好事者主动访问你的代理服务器,就会发现一些不对劲:
https://images.weserv.nl/?url=https://i.imgur.com/avZQgib.png

【fig0.1】

尽管流量没有任何明显的特征,但是如果墙主动访问代理服务器,会发现流量的目的地没有真正的网站,从而识破https流量的目的。使用https流量不做掩护,反而增大了IP被墙的概率。因此你需要在V2Ray服务外面加一层真网站做掩护。
https://images.weserv.nl/?url=https://i.imgur.com/raSjDmM.png

【fig0.2】

这就是V2Ray+ws+tls再加上web的原理。在配置了真实网站之后,只有你自己知道是个代理,在别人看来是个网站(包括墙)。反过来说,V2Ray+ws+tls+web也可以看作是自建了一个网站,然后利用这个网站来翻墙。因此,如果你读完本文,不仅能学会V2Ray翻墙,还能学到一点建网站的流程。

上面“https流量”的正确叫法是“tls流量”,这东西就是你平时浏览网页发出的流量。这里为了方便新手理解,叫做“https流量”。

安全提示:

如果服务器之前运行过SS,SSR,V2Ray(非TLS)等服务,请确保先停止原来的代理服务,再安装V2Ray。如果不知道怎么停止,请重装VPS(在网页控制面板上点reinstall,不到一分钟就搞定)。翻墙的隐蔽性取决于最薄弱的一环,如果服务器上同时运行其它代理软件,这些代理软件依然会被墙探测到,这种情况下V2Ray+ws+tls+web并不能保证隐蔽性。

自建网站看上去很复杂,其实很简单,只要按照以下步骤:

  • 购买域名&配置域名解析:V2Ray需要域名伪装成真正的网站,因此你需要购买一个域名,并把域名绑定到服务器的IP地址上。
  • 一键填写配置文件:本文已经写好了配置文件,只要把域名,UUID等信息填进去就行了。
  • 一键安装v2ray+nginx
  • 上传配置文件&一键运行
  • 配置客户端

成功翻墙以后,还可以做以下事情进一步强化:

  • 可选1. 加固服务器
  • 可选2. 配置CDN隐藏IP
  • 可选3. 使用BBR加速
  • 可选4. 自行编译Nginx

下面按照以上顺序讲解配置。

1. 购买域名&配置域名解析

这里从域名注册商GoDaddy购买域名,用Cloudflare提供域名解析。GoDaddy本身也提供域名解析服务,这里用Cloudflare是为了配置CDN方便。如果遇到墙加高,或者IP被墙等极端情况,只要简单的配置就可以切换成v2ray+ws+tls+web+cdn。CDN翻墙速度较慢,但是稳定性极高。

可能不少新手没听说过GoDaddy和Cloudflare,这里介绍一下,GoDaddy是世界上最大的域名提供商,占据市场30%的份额。Cloudflare是世界上最大的CDN提供商,全球半数的网站都在使用Cloudflare。注册不用担心隐私泄露或钓鱼风险。

注册GoDaddy和CloudFlare需要邮箱。特别注意,购买域名之后,域名服务商会公开邮箱地址。建议至少使用gmail注册,如果对隐私有较高要求,可以用Protonmail等匿名邮箱注册。

1.1 注册GoDaddy

点击这里进入GoDaddy的新加坡官网,全过程都有中文界面。出于安全考虑,选择邮箱注册。
https://images.weserv.nl/?url=https://i.imgur.com/bu3N2ZK.png

【fig1.1.1】

1.2 选择一个域名

GoDaddy和淘宝的用法完全一样。注册完成以后,回到GoDaddy首页。点击搜索框,输入一个你想要的域名,查询价格。GoDaddy会根据域名包含的词汇定价,为了降低成本,域名尽量选得随机一些,其中不要包含任何单词,我这里头滚键盘输入hrw1rdzqa7c5a8u3ibkn。
https://images.weserv.nl/?url=https://i.imgur.com/IxWvPW8.png

【fig1.2.1】

可以看到不同后缀的域名价格差别很大,通常.com .net这类域名比较昂贵.website,.site,~.rocks,.xyz~价格较低,选一个最便宜的。这里我们选www.hrw1rdzqa7c5a8u3ibkn.website,这个域名一年不到7块钱。如果你购买时发现价格贵一些也是正常的,域名首年的价格通常不到10块钱。
https://images.weserv.nl/?url=https://i.imgur.com/ywKsYoB.png

【fig1.2.2】

接下来进入购物车,隐私保护不用选。
https://images.weserv.nl/?url=https://i.imgur.com/8fM0rJP.png

【fig1.2.3】

点进入购物车,进入结算页面。GoDaddy默认选购买2年,我们的域名只用来翻墙,选1年就可以了,到时候再换。
GoDaddy支持支付宝或信用卡付款。第一次购买域名,GoDaddy会要求你填写个人信息,这里姓名和手机号随便填一个假的就行。
https://images.weserv.nl/?url=https://i.imgur.com/NACRyMf.png

【fig1.2.4】

购买完成,刚买到的域名不会马上在域名列表里出现,一般会有一两分钟的延迟。
接下来注册Cloudflare。GoDaddy的页面暂时不要关,一会还要回来配置域名服务器。

1.3 注册CloudFlare。

打开Cloudflare官网,用邮箱注册,如图。注册页面入口https://dash.cloudflare.com/sign-up
https://images.weserv.nl/?url=https://i.imgur.com/S2epVPg.png

【fig1.3.1】

接下来输入刚才购买的域名,注意这里输入的是【二级域名】。所谓二级域名,可以理解为网址去掉www。
比如我的网站的网址是www.hrw1rdzqa7c5a8u3ibkn.website,那么这里应该输入hrw1rdzqa7c5a8u3ibkn.website,如图:
https://images.weserv.nl/?url=https://i.imgur.com/Q8Q5TA9.png

【fig1.3.2】

点【Add Site】,把域名交给Cloudflare托管。

接下来选择套餐,这里选择FREE套餐。
https://images.weserv.nl/?url=https://i.imgur.com/brAXbxG.png

【fig1.3.3】

点【Confirm Plan】,进入管理页面,不要关掉页面,接下来配置域名解析。

1.4 配置域名解析

配置域名解析分两步:

  • 配置域名服务器记录(也叫name server,NS记录)
  • 配置地址解析记录(也叫address,A记录)

NS记录用来表明由哪台服务器对域名进行解析。从GoDaddy买到域名后,域名是由Godaddy的服务器进行解析的。我们这里把Godaddy的服务器换成Cloudflare的服务器。

如图是Cloudflare的管理界面,如果你的域名之前有配置域名解析,管理界面会显示之前的记录。暂时不用管这些。
点Continue,修改域名服务器。

【fig1.4.1】

点【Continue with default】
https://images.weserv.nl/?url=https://i.imgur.com/YiZuOAP.png

【fig1.4.2】

接下来Cloudflare会提示你变更域名服务器,并给出了方法。
https://images.weserv.nl/?url=https://i.imgur.com/HTUNjSb.png

【fig1.4.3】

画红框的部分就是Cloudflare提供的两个域名服务器,我这里是ns90.domaincontrol.com和ns91.domaincontrol.com,
你看到的的可能和我不一样。

回到GoDaddy,点击屏幕右上角的用户名,选择【我的产品】。
https://images.weserv.nl/?url=https://i.imgur.com/H7iSxUX.png

【fig1.4.4】

这里可以看到你拥有的域名,点击域名旁边的【DNS】,进入DNS管理页面。
https://images.weserv.nl/?url=https://i.imgur.com/he6OqIE.png

【fig1.4.5】

在DNS管理界面向下拉,找到域名服务器。如图所示,这里可以看到GoDaddy提供的两个域名服务器,点击【更改】。
https://images.weserv.nl/?url=https://i.imgur.com/LBZ5vNd.png

【fig1.4.6】

选择【输入我自己的域名服务器】
https://images.weserv.nl/?url=https://i.imgur.com/93ic5KS.png

【fig1.4.7】

输入刚才Cloudflare提供的两个域名服务器,我这里是fccp.ns.cloudflare.com和xjp.ns.cloudflare.com,
点击【保存】。
https://images.weserv.nl/?url=https://i.imgur.com/LUl7HAd.png

【fig1.4.8】

注意不要有多余的域名服务器,不是CloudFlare提供的就要删除,否则可能会出问题。

接下来转移域名服务器可能需要几分钟,转移完成后会收到Cloudflare的邮件,可以先等一阵子。

配置地址解析(A记录)
转移域名服务器完成后,进入cloudflare的首页,点击右上角的【log in】,进入你的账户,如图:
https://images.weserv.nl/?url=https://i.imgur.com/rdFD2Ke.png

【fig1.4.9】

点击买来的域名,进入下一步,如图:
https://images.weserv.nl/?url=https://i.imgur.com/dMSA0xq.png

【fig1.4.10】

点击【DNS】按钮,进入Cloudflare的DNS管理页面,如下图:
https://images.weserv.nl/?url=https://i.imgur.com/BCeOWfm.png

【fig1.4.11】

点击【Add record】,一次可以添加一条解析记录.

这里简单讲解一下,如果不想了解原理,可以跳过这一部分。

每条域名解析有四个部分:Type,Name,Address,TTL

Type是域名解析的类型,常见的几种有

  • A记录:即地址(Address)记录,用来指定域名的IPv4地址。如果需要将域名指向一个IP地址,就需要添加A记录。举个例子,我们要把域名www.hrw1rdzqa7c5a8u3ibkn.website指向VPS的IP地址218.30.118.6,就要添加A记录。
  • AAAA记录,指定域名的IPv6地址。
  • CNAME:即规范名字(Canonical Name)记录,俗称“别名”。如果需要把域名指向另一个域名,就要添加CNAME记录。
  • NS:域名服务器记录,如果要把域名交给其他DNS服务器解析,就需要添加NS记录。我们刚才修改的就是NS记录。

接下来说明每个选项应该填什么,以及为什么这么填:

Name
对于A记录,这里介绍三种填法

  • www:表示解析带www的域名,即www.hrw1rdzqa7c5a8u3ibkn.website
  • @:直接解析裸域名,即hrw1rdzqa7c5a8u3ibkn.website
  • *:表示泛解析,即匹配其他所有域名 *.hrw1rdzqa7c5a8u3ibkn.website

Address
这里填VPS的IP地址,我这里是218.30.118.6

TTL
即 Time To Live,缓存的生存时间。指本地dns缓存解析记录的时间,缓存失效后会再次获取记录。在Cloudflare里,如果配置了CDN,则这里填Auto即可;如果没有配置CDN,可以选择Auto,也可以选择一个大于1小时的值。

理解了上面的内容以后,接下来添加两条A记录(如果VPS只有IPv6地址则添加AAAA记录)

点一下云朵,确保云是灰色的(DNS only)。橘色云朵表示此解析记录使用CDN,灰色云朵表示不使用 CDN,点击云朵可以切换。这里不要使用CDN,否则接下来的配置会出问题。

  • 第一条A记录,name填www,address填服务器IP地址,TTL选择1小时。(表示解析带www的地址)
  • 第二条A记录,name填@,address填服务器IP地址,TTL选择1小时。(表示解析不带www的裸域名)

填好之后的正确结果如图:
https://images.weserv.nl/?url=https://i.imgur.com/qDKfuRy.png

【fig1.4.12】

注意云一定是灰色的。

检查是否配置成功:
配置完成后点【save】就大功告成了,可以打开windows的powershell,输入

ping www.hrw1rdzqa7c5a8u3ibkn.website

(替换成你的域名)

Ping一下你的域名,如果能Ping通,就说明域名解析没问题。

2. 配置文件

V2Ray和Nginx的配置文件这里已经写好。你需要做的就是填表格,把配置中标出的地方换成自己的内容。
编辑配置文件可以用Windows记事本,不过推荐使用Notepad++。
下载地址:
网页链接直接下载链接(7.8.4)

2.1 V2Ray配置文件

V2Ray配置文件如下:

{  
"inbound": {  
    "protocol": "vmess",  
    "listen": "127.0.0.1",  
 "port": 8964,  
 "settings": {"clients": \[  
        {"id": "◆◆◆◆◆◆◆◆◆◆◆◆"}  
    \]},  
 "streamSettings": {  
 "network": "ws",  
 "wsSettings": {"path": "/★★★★★★★★★★★★"}  
    }  
},  
  
"outbound": {"protocol": "freedom"}  
}

是不是很短?接下来把标了符号的地方换成你自己的信息。

(1)
◆◆◆◆◆◆◆◆◆◆◆◆:标“◆”的地方填写UUID。

UUID可以从这个网站生成:https://www.uuidgenerator.net/。只要打开或者刷新这个网页就可以得到一个UUID。
举个例子,我生成的UUID是:

63c0042a-4a85-4d03-a488-3ba3aa002461

(2)
★★★★★★★★★★★★:标“★”的地方填写一个随机字符串。注意不要删掉前面的斜杠。

“随机字符串”就是你在键盘上胡乱敲打出来的东西,比如dsfhsdjfhref。推荐用这个网站生成一个,只要打开或刷新网页就可以得到一个随机字符串。

我用这个网站随机生成的字符串是mL7Gg8K

这个随机字符串就是WebSocket路径,**不要抄我这里的例子,去自己生成一个!**否则会被墙探测出来。建议WebSocket路径取得长一些(5个字符以上),过于简单,过于常见的路径(比如/ray,/v2,/v2ray之类的名称),很容易被墙探测出来。

填好之后的配置如下图:
https://images.weserv.nl/?url=https://i.imgur.com/K1FEnrw.png

【fig2.1.1】

最后,把V2Ray的配置文件另存为config.json

2.2 Nginx配置文件

Nginx配置文件如下:

  
server {  
    ### 1:  
    server\_name ●●●●●●●●●●●●;  
  
    listen 80 reuseport fastopen=10;  
    rewrite ^(.\*) https://$server\_name$1 permanent;  
    if ($request\_method  !~ ^(POST|GET)$) { return  501; }  
    autoindex off;  
    server\_tokens off;  
}  
  
server {  
    ### 2:  
    ssl\_certificate /etc/letsencrypt/live/●●●●●●●●●●●●/fullchain.pem;  
  
    ### 3:  
    ssl\_certificate\_key /etc/letsencrypt/live/●●●●●●●●●●●●/privkey.pem;  
  
    ### 4:  
    location /★★★★★★★★★★★★  
    {  
        proxy\_pass http://127.0.0.1:8964;  
        proxy\_redirect off;  
        proxy\_http\_version 1.1;  
        proxy\_set\_header Upgrade $http\_upgrade;  
        proxy\_set\_header Connection "upgrade";  
        proxy\_set\_header Host $host;  
  
        sendfile on;  
        tcp\_nopush on;  
        tcp\_nodelay on;  
        keepalive\_requests 10000;  
        keepalive\_timeout 2h;  
        proxy\_buffering off;  
    }  
  
    listen 443 ssl reuseport fastopen=10;  
    server\_name $server\_name;  
    charset utf-8;  
  
    sendfile on;  
    tcp\_nopush on;  
    tcp\_nodelay on;  
    keepalive\_requests 10000;  
    keepalive\_timeout 2h;  
  
    ssl\_protocols TLSv1.2 TLSv1.3;  
    ssl\_ciphers TLS13-CHACHA20-POLY1305-SHA256:TLS13-AES-128-GCM-SHA256:TLS13-AES-256-GCM-SHA384:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;  
    ssl\_ecdh\_curve secp384r1;  
    ssl\_prefer\_server\_ciphers off;  
  
    ssl\_session\_cache shared:SSL:60m;  
    ssl\_session\_timeout 1d;  
    ssl\_session\_tickets off;  
    ssl\_stapling on;  
    ssl\_stapling\_verify on;  
    resolver 8.8.8.8 8.8.4.4 valid=300s;  
    resolver\_timeout 10s;  
  
    if ($request\_method  !~ ^(POST|GET)$) { return 501; }  
    add\_header X-Frame-Options DENY;  
    add\_header X-XSS-Protection "1; mode=block";  
    add\_header X-Content-Type-Options nosniff;  
    add\_header Strict-Transport-Security max-age=31536000 always;  
    autoindex off;  
    server\_tokens off;  
  
    index index.html index.htm  index.php;  
    location ~ .\*\\.(js|jpg|JPG|jpeg|JPEG|css|bmp|gif|GIF|png)$ { access\_log off; }  
    location / { index index.html; }  
}  

看上去很长,实际上只有四处需要填写,配置文件里用#1,#2,#3,#4标出了位置,把标符号的地方换成你自己的信息。

●●●●●●●●●●●●:标注“●”的地方填写域名,注意这里的域名带www

这个域名就是前面购买的域名,本文中是www.hrw1rdzqa7c5a8u3ibkn.website,一共有三处需要填,都以“●”标出:

(1) server_name ●●●●●●●●●●●●; 注意域名和前面的server_name保持一个空格,后面的分号“;”不要删掉。
填好之后:(注意带www,以下皆相同)

server\_name www.hrw1rdzqa7c5a8u3ibkn.website;

(2) ssl_certificate /etc/letsencrypt/live/●●●●●●●●●●●●/fullchain.pem; 两边的斜杠“/”不要删掉。
填好之后:

ssl\_certificate /etc/letsencrypt/live/www.hrw1rdzqa7c5a8u3ibkn.website/fullchain.pem;

(3) ssl_certificate /etc/letsencrypt/live/●●●●●●●●●●●●/fullchain.pem; 一样,两边的斜杠“/”不要删掉
填好之后:

ssl\_certificate /etc/letsencrypt/live/www.hrw1rdzqa7c5a8u3ibkn.website/fullchain.pem;

(4) ★★★★★★★★★★★★:标注“★”的地方填写一个随机字符串,这个随机字符串必须和V2Ray配置中的一样,不然无法工作。注意不要删掉前面的斜杠。
这个例子里,此处填mL7Gg8K。

填好之后的配置如下图:
https://images.weserv.nl/?url=https://i.imgur.com/Vc5LhXw.png

【fig2.1.2】

最后,把Nginx的配置文件另存为default.conf(注意扩展名就是.conf)

3. 上传配置 & 运行

3.1 连接到服务器,安装v2ray+Nginx

很多新手在买到VPS之后不知所措,其实VPS和游戏账号是一样的,买游戏账号付款之后,店家会私信告诉你两件东西:

用户名,密码

买VPS付款之后,VPS提供商会给你发邮件,告诉你四件东西:

IP地址,密码,登录账号,端口

IP地址和密码一定会有,登录账号如果没说,默认是root。端口如果没说,默认填22.

拿到登录信息之后,就可以登录服务器了。这里推荐Bitvise SSH,轻量级,但是功能强大。
下载链接:https://www.bitvise.com/ssh-client-download
直接下载链接:https://dl.bitvise.com/BvSshClient-Inst.exe
安装好之后的界面如下图,点红框圈起的下拉菜单,【Initial method】下拉菜单里面选【password】,在【Store encrypted password in profile】选项上打勾。
https://images.weserv.nl/?url=https://i.imgur.com/FliqoSK.png

【fig3.1.1】

这里假定我们的IP地址是218.30.118.6,密码是12345,登录账号和密码分别是root和22. 如图:

  • 【Host】:这里填IP地址
  • 【Port】:这里填端口,如果没说就是22
  • 【Username】:这里填用户名,如果没说就是root
  • 【Password】:登录密码。

填好之后如下图,点【Log in】就可以登录了。
https://images.weserv.nl/?url=https://i.imgur.com/mWm5Oxq.png

【fig3.1.2】

第一次登录服务器会弹出窗口,问是否要保存密钥,点【Accept and save】继续。

成功登录之后会弹出两个窗口。
https://images.weserv.nl/?url=https://i.imgur.com/DvucZdx.png

【fig3.1.3】

https://images.weserv.nl/?url=https://i.imgur.com/UNzAKOO.png

【fig3.1.4】

一个是文件浏览窗口,使用方法和Windows资源管理器一样,这里可以浏览服务器上的文件。把电脑中的文件拖拽到这里,就可以把文件上传到服务器。
另一个黑色的窗口是命令窗口。在电脑上复制一段文字,在这个窗口上右键,就可以把文字粘贴到命令窗口。

3.2 配置SSL证书

为了用真正的https流量翻墙,我们的网站必须有合法的SSL证书。可以用自动化工具Certbot申请证书,只要把以下命令复制到命令窗口,依次执行即可。

这里说的“证书”,实际指的是“数字证书”。当然申请完全是免费的,申请时需要邮箱地址。如有必要,可以使用匿名邮箱。

(1) 安装Certbot:

yum install -y python36 && pip3 install certbot

运行这条命令后,如果显示:

Successfully installed xxxx, xxxx, xxxx (各种软件包名字)

就表示成功。

(2) 停止防火墙

systemctl stop firewalld && systemctl disable firewalld

注意,在CentOS7版本以上,默认开启防火墙,不关闭防火墙将无法申请证书。某些系统上没有安装firewalld防火墙,执行这一步命令会报错,但是不影响后面的操作。

运行这条命令后,如果显示:

Removed /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.

就表示成功

(3) 申请SSL证书
这一步做个填空题,把这条命令里的域名和邮箱,换成你自己的信息。

certbot certonly --standalone --agree-tos -n -d www.●●●●●● -d ●●●●●● -m ▲▲▲@▲▲▲.▲▲▲

第一个-d加一个带www的域名,第二个-d加一个不带www的域名,-m后面加你的电子邮箱。
注意前后要带空格。

例子:(域名:www.hrw1rdzqa7c5a8u3ibkn.website,邮箱:xijinping@protonmail.com)

certbot certonly --standalone --agree-tos -n -d www.hrw1rdzqa7c5a8u3ibkn.website -d hrw1rdzqa7c5a8u3ibkn.website -m xijinping@protonmail.com

运行这条命令后,如果显示:

IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at:
  /etc/letsencrypt/live/www.hrw1rdzqa7c5a8u3ibkn.website/fullchain.pem
  Your key file has been saved at:
  /etc/letsencrypt/live/www.hrw1rdzqa7c5a8u3ibkn.website/privkey.pem
  Your cert will expire on 2020-06-04. To obtain a new or tweaked
  version of this certificate in the future, simply run certbot
  again. To non-interactively renew *all* of your certificates, run
  “certbot renew”
- Your account credentials have been saved in your Certbot
  configuration directory at /etc/letsencrypt. You should make a
  secure backup of this folder now. This configuration directory will
  also contain certificates and private keys obtained by Certbot so
  making regular backups of this folder is ideal.
- If you like Certbot, please consider supporting our work by:

  Donating to ISRG / Let’s Encrypt:  https://letsencrypt.org/donate
  Donating to EFF:                    https://eff.org

就表示成功。

注意:这一步比较容易出错,常见的问题有:

  • 其它代理占用了80,443端口。解决方法:停止其它代理软件,或重装VPS。
  • 没有正确配置域名解析。解决方法:ping一下域名,看看能不能正确解析到IP。注意不要打开CDN(云朵点灰)。
  • 没有关闭防火墙。解决方法:回到(2),关闭防火墙。

(4) 配置证书自动更新

echo "0 0 1 \*/2 \* service nginx stop; certbot renew; service nginx start;" | crontab

运行这条命令后,如果没有任何信息输出,就表示成功。

我们申请的证书只有三个月期限,上面的命令表示每隔两个月,证书就自动续命一次,从而保证可以一直用下去。

3.3 安装V2Ray和Nginx
(1) 一键安装
V2Ray和Nginx可以一键安装,把下列命令复制粘贴到控制台,运行即可。

yum install -y nginx && yum install -y curl && bash -c "$(curl -L -s https://install.direct/go.sh)"

运行这条命令后,如果最后一行显示:
V2Ray v4.x.x is installed.
就表示成功。(如果V2Ray安装成功,那么Nginx也一定安装成功)

(2) 关闭SELinux
在某些系统上,需要关闭SELinux,否则Nginx无法正常将流量转发给V2Ray,输入

setsebool -P httpd\_can\_network\_connect 1 && setenforce 0

关闭SELinux,没有提示就表示成功。

4. 上传配置文件&运行

安装好V2Ray和Nginx后,我们终于来到了最后一步。在启动V2Ray之前,需要把之前的配置文件上传

4.1 上传配置文件

这一步把第(2)步编辑好的配置文件上传就可以了。
首先上传V2Ray的配置文件,V2Ray的配置文件存储在

/etc/v2ray

目录下,把上面这个路径,复制到文件管理器的路径栏,回车,即可跳转到该目录下。如图:
https://images.weserv.nl/?url=https://i.imgur.com/Cj92ghh.png

【fig4.1.1】

可以看到这里已经有一个config.json文件了,这是V2Ray安装时自动生成的。接下来的操作和Windows一样,把你编辑好的config.json拖拽到这里,就可以上传了。

文件管理器会提示你存在同名文件,选择【Overwrite】覆盖原来的文件即可。
https://images.weserv.nl/?url=https://i.imgur.com/n0Uqnj7.png

【fig4.1.2】

上传完成好以后,最好再验证一下,输入

/usr/bin/v2ray/v2ray -test -config=/etc/v2ray/config.json

如果显示:

V2Ray 4.x.x (V2Fly, a community-driven edition of V2Ray.)
A unified platform for anti-censorship.
Configuration OK.

说明配置没有问题。

然后按同样的步骤上传nginx配置文件,Nginx的配置文件存储在

/etc/nginx/conf.d

目录下,转到这个目录,拖拽上传你编辑的default.conf文件即可。

再验证一下Nginx配置是否正确,输入:

nginx -t

如果显示:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

说明配置没有问题。

4.2 启动

V2Ray和Nginx都是守护进程,可以认为是Windows上的“后台服务”。把V2Ray和Nginx配置成守护进程以后,这两个程序就可以在服务器上持续运行了。Linux服务器的稳定性非常高,可以连续不重启运行一年,甚至更长。我们接下来就让V2Ray和Nginx在服务器上运行一年。

在Linux上启动一个守护进程很简单,输入以下两条命令就可以启动V2Ray和Nginx:

service v2ray start  
service nginx start

有启动,也有其它操作,这里列出所有有用的命令,方便管理后台:

启动V2Ray:

service v2ray start

重启V2Ray:

service v2ray restart

注:这一条是常用命令,每次修改配置文件后,都要重启一下V2Ray。

查看V2Ray状态:

service v2ray status

停止V2Ray:

service v2ray stop

查看V2Ray版本:

/usr/bin/v2ray/v2ray -version

测试V2Ray配置文件:

/usr/bin/v2ray/v2ray -test -config=/etc/v2ray/config.json

注:常用命令,每次修改配置文件后,最好检查一下配置文件是否正确。
配置文件位置:

/etc/v2ray/config.json 

Nginx:
启动Nginx:

service nginx start

重启Nginx:

service nginx restart

查看Nginx状态:

service nginx status

停止Nginx:

service nginx stop

测试Nginx配置文件:

nginx -t

配置文件位置:

/etc/nginx/conf.d/default.conf

配置完成后,可以在浏览器里输入网址,如果显示Nginx的红色欢迎页面,就说明网址配置成功了!
接下来要做的是上传一个网页模板,这样别人访问你的服务器就会看到一个真的网站。
https://images.weserv.nl/?url=https://i.imgur.com/Npk1rOW.png

【fig4.2.1】

4.3 上传网页模板

去Google上搜“website template”可以找到很多提供网页模板的网站,这里随便找一家,例如https://colorlib.com/wp/templates/

网页模板强烈建议用纯英文模板,其中不要包含任何中文内容,否则(可能)会增加网站被墙的概率。

下载好以后,解压压缩文件,一路点开,如图,可以看到里面有一个index.html文件(有些是index.htm或index.php)
https://images.weserv.nl/?url=https://i.imgur.com/8UXO1Ul.png

【fig4.3.1】

把这个文件夹里的所有东西,包括index.html,blog.html,以及css,fonts,img,js几个文件夹,全部上传到
/usr/share/nginx/html/
目录下面。上传方法前面已有介绍,打开Bitvise SSH,拖动到文件管理窗口即可上传。

接下来打开网址,这时候可以看到一个真正的网站。(提示:不同系统的Nginx欢迎页面可能不同,只要这里可以显示网页,就说明Nginx工作正常)

5. 客户端配置

5.1 Windows客户端

Windows客户端推荐V2RayN,V2RayN是开源软件,下载地址:
https://github.com/2dust/v2rayN/releases

可以看到有一个v2rayN-Core.zip和一个v2rayN.zip,这里下载v2rayN-Core.zip(GUI界面+V2Ray内核)。

安装好V2RayN之后,如图
https://images.weserv.nl/?url=https://i.imgur.com/UP27H1F.png

【fig5.1.1】

点【服务器】按钮,选择【添加VMess】服务器。

  • 地址:你的VPS的IP地址,这里我的IP是218.30.118.6。
  • 端口:443
  • 用户ID:就是2.1节中,V2Ray配置文件里的UUID,本文中是63c0042a-4a85-4d03-a488-3ba3aa002461
  • 额外ID:0(保持默认值)
  • 加密方式:随便选。
  • 传输协议:选ws,即WebSocket
  • 别名:随便填。
  • 伪装类型:none(保持默认值)
  • 伪装域名:绑定到服务器的域名,我的是www.hrw1rdzqa7c5a8u3ibkn.website
  • 路径:即前面的随机字符串,注意前面必须要加上斜杠“/”,这里的例子是/mL7Gg8K
  • 底层传输安全:选tls

配置完成后如下图:
https://images.weserv.nl/?url=https://i.imgur.com/rYmRD6S.png

【fig5.1.2】

5.2 Android客户端

安卓客户端推荐V2RayNG,配置和V2RayN可以互通。下载地址:
https://github.com/2dust/v2rayNG/releases

分享配置很简单,在Windows的V2RayN客户端里,点击服务器列表,勾选右边的“显示分享内容”,可以显示配置的二维码。安卓端选择“扫描二维码”导入配置即可。

5.3 iOS客户端

iOS客户端全部要收费,常用有Shadowrocket(小火箭)等。配置方法略。

其它平台客户端(Mac OS,Linux)可以查看V2Ray官网的客户端列表:神一样的工具们
**
到这一步结束,整个V2Ray翻墙的搭建就结束了。接下来是一些可选配置,可以加强你的服务器的隐蔽性和安全性。**

可选配置1:使用CDN隐藏IP

CDN相当于在服务器前又加了一层代理,墙只知道你的域名和CDN的IP,无法得知代理服务器的真实IP。如果伪装网站开启了DoH+ESNI,甚至连域名都可以隐藏。因此v2ray+ws+tls+web+CDN相当于事实上的双重代理,它的隐蔽性和安全性非常高。缺点是Cloudflare 会让访问延迟变高一些。除非遇到IP被墙,或者六四前后等墙加高等极端情况,如果平时翻墙很稳定,就没有必要打开CDN。

因为前面已经注册了Cloudflare解析,所以使用CDN非常简单,只要两步即可。

(1) 登录Cloudflare账号,点击【DNS】按钮,进入Cloudflare的管理页面,如图:
https://images.weserv.nl/?url=https://i.imgur.com/ihzyMBe.png

【figb.1】

点一下灰色的云,让颜色变成橙色即可。

点击切换后,域名不会马上解析到CDN的地址,一般会有几分钟的延迟。可以ping一下你的服务器的域名,如果返回地址是CDN的IP,就说明切换完成。

(2.1) 使用自动选择的CDN IP地址
接下来配置客户端。客户端切换成CDN很简单,配置的其它地方不用改动,只要把地址一栏换成域名即可,如图
https://images.weserv.nl/?url=https://i.imgur.com/1MsBKA0.png

【figb.2】

手机端配置方法类似,把IP换成网址即可。

(2.2) 手动指定CDN IP地址
(2.1)节介绍的方法可以满足大多数人的需要,事实上要连接的CDN节点也可以手动指定。手动指定CDN节点地址,可以免费使用不同运行商的线路和不同国家的入口节点。如果自动分配的CDN节点速度不理想,可以尝试手动指定入口节点。

配置方法也非常简单:在第(1)节把云朵点成橙色之后,在V2RayN的【地址】一栏里,不填入网址,而是填入CDN的IP地址。
举例如下:

  • 电信线路+美国旧金山节点:172.64.0.8
  • 联通线路+日本节点:104.20.157.84
  • 移动线路+新加坡节点:104.28.14.8

上述IP是属于Cloudflare的公共地址,所以不会被封。Cloudflare提供了非常多的地区+线路组合,具体可参加网友@marxist 的贴子:
关于国产输入法的隐私问题以及如何选择合适的cloudflare IP地址?
原贴见:https://ofvps.com/201907510

可选配置2:加固服务器,配置防火墙

如果VPS上没有其它服务,建议打开防火墙。服务器对外只暴露80,443,SSH端口,可以降低代理服务器被探测的风险。

前面的步骤中禁用了防火墙firewalld,不是所有的机器都安装了firewalld,我们这里使用ufw防火墙作为替代。

安装ufw:

yum install -y epel-release && yum install -y ufw

打开SSH,HTTP,HTTPS端口,运行:

ufw disable && ufw allow ssh && ufw allow http && ufw allow https && ufw enable

如果ssh端口不是22,那么需要将ssh改为端口号。例如ssh端口为14320,则:

ufw disable && ufw allow 14320 && ufw allow http && ufw allow https && ufw enable

ufw和firewalld的底层实现都是一样的,都调用了linux iptables,本质并无太大区别。

可选配置3:使用BBR加速

BBR是谷歌开发的拥塞控制算法,可以降低延迟,加快访问速度。启用BBR需要4.10以上版本Linux内核,现在大多数VPS都满足这一条件,输入uname(空格)-a可以查看内核版本.
如果内核版本大于4.10就可以用BBR了,把以下三条命令复制到命令窗口执行:

bash -c 'echo "net.core.default\_qdisc=fq" >> /etc/sysctl.conf'  
bash -c 'echo "net.ipv4.tcp\_congestion\_control=bbr" >> /etc/sysctl.conf'  
sysctl -p

然后运行以下命令,查看BBR是否启动成功:

sysctl net.ipv4.tcp\_congestion\_control

如果提示

net.ipv4.tcp\_congestion\_control = bbr

就表示成功启动了BBR加速。

可选配置4:编译Nginx

**本节内容需要有一定Linux基础**

某些系统上,通过yum安装的Nginx不支持TLS1.3,需要自行编译。启用TLS1.3可以明显降低VMess+WS+TLS的延迟(握手1-RTT,恢复会话0-RTT)。此外,TLS1.3第一个RTT之后的握手包均被加密,(可能)会降低TLS协议的指纹特征。

Caddy(另一个HTTP反向代理软件)也支持TLS1.3,但自行配置和编译的Nginx可以通过调整多种参数,达到更高的性能。自行编译Nginx也可以启用一些其它反向代理中的特征,例如HTTP/2等。

Nginx编译安装步骤:

更新所有软件及系统内核(用时较长,可选):

  
yum -y update  

安装依赖软件和库:

  
yum -y install wget gcc make perl pcre pcre-devel zlib zlib-devel  

下载OpenSSL 1.1.1g(截至2020年4月21日的最新版)

  
wget https://github.com/openssl/openssl/archive/OpenSSL\_1\_1\_1g.zip  
unzip OpenSSL\_1\_1\_1g.zip  
rm OpenSSL\_1\_1\_1g.zip && mv openssl-OpenSSL\_1\_1\_1g openssl  

下载Nginx 1.18.0(截至2020年4月21日的最新版)

  
wget https://nginx.org/download/nginx-1.18.0.tar.gz  
tar -xzvf nginx-1.18.0.tar.gz  
cd nginx-1.18.0  

配置编译选项

  
./configure --with-openssl=../openssl --with-openssl-opt='enable-tls1\_3' --with-http\_v2\_module --with-http\_ssl\_module --with-http\_gzip\_static\_module  

这一步是Nginx启用TLS1.3的关键,–with-openssl-opt=‘enable-tls1_3’表示启用TLS1.3,–with-http_v2_module表示启用HTTP/2

编译&安装

  
make && make install  

编译完成的Nginx二进制文件位置在/usr/local/nginx/sbin/nginx,可用以下命令进行测试:

  
/usr/local/nginx/sbin/nginx -V  

与此对应的,Nginx配置文件目录和网页文件目录分别在:

  
/usr/local/nginx/conf  
/usr/local/nginx/html  

为了把Nginx配置成系统服务,还需要配置systemd文件:

  
\[Unit\]  
After=syslog.target network.target remote-fs.target nss-lookup.target  
  
\[Service\]  
Type=forking  
PIDFile=/usr/local/nginx/logs/nginx.pid  
ExecStartPre=/usr/local/nginx/sbin/nginx -t  
ExecStart=/usr/local/nginx/sbin/nginx  
ExecReload=/bin/kill -s HUP $MAINPID  
ExecStop=/bin/kill -s QUIT $MAINPID  
PrivateTmp=true  
  
\[Install\]  
WantedBy=multi-user.target  

最后把上述文件命名为nginx.service,放在/etc/systemd/system下,就完成了Nginx的编译安装。

--
到这里,整个V2Ray翻墙教程就结束了,过程总结:

  1. 购买域名 & 配置域名解析
  2. 安装Nginx和V2Ray
  3. 上传配置文件

可选步骤:

  • CDN隐藏IP
  • 打开防火墙
  • BBR加速
  • 编译Nginx

品葱用户 jzxivne 评论于 2020-03-02

教程很详细,谢谢作者!补充几点:

  1. 不同的操作系统里面的V2Ray软件可以看官网列的一些:https://v2ray.com/awesome/tools.html。文中没有提到macOS的V2Ray软件,我比较推荐V2rayU。
  2. 那个V2Ray本地配置里面最后一行的allowInsecure如果在意安全的话可以设置为false(我试过可以用,但是没有一直开,不知道会不会产生什么问题)。
  3. 还有如果一直套CDN的话,服务器的SSL证书其实可以用CloudFlare的Origin Certificate。
  4. GoDaddy那一步的信息包括邮件地址、名字、住址是完全公开的,不要填隐私的东西,可以编名字(但是至少要像一个人名)。
  5. 有很多人说可以用国内的CDN(又拍云、阿里云那种),速度飞快,但是我推荐别用,它基本就直接给政府暴露了你的IP、你的VPS的IP、CDN备案的可以定位到你个人信息、还有没有TLS加密的VMess流量。CloudFlare唯一没被墙的原因是有太多网站放在CloudFlare上了。
  6. CloudFlare经常定期或者定点变慢,甚至ping不到,有的时候过一会就好了。
  7. 如果访问大陆网站最好不要走V2Ray代理,不然如果这个网站有Cookie就可以把你的Cookie关连到你的VPS的IP,这样IP暴露了,而且也知道你翻墙了。大部分V2Ray都可以配置在访问国内或者局域网的IP的时候不走代理,包括上面文中的V2RayN、V2RayNG、Shadowrocket应该都行,命令行的V2Ray也可以用config.json配置。下面有评论说也可以浏览器用SwitchyOmega插件,我试过挺好用的。真的很在意暴露IP的话(毕竟有一个开着的SSH)可以走完V2Ray再走一个国外软件,比如Tor(关于VPN->Tor官方有介绍)。

品葱用户 Oversee 评论于 2020-03-04

补充下Apache的配置,给用Apache的人方便:

Apache配置:
Apache需要编译安装较新版本,系统自带默认2.2版本不支持ws,建议用LAMP一件安装脚本编译安装Apache(只需安装Apache别的不用),配置Apache https并访问网站测试正常后:

1.开启必要模块
ssl
proxy
proxy_wstunnel
proxy_http
rewrite
headers

vi /etc/httpd/httpd.conf

vi /usr/local/apache/conf/httpd.conf

一般配置好Apache后只需再开启:
LoadModule proxy_wstunnel_module modules/mod_proxy_wstunnel.so

2.配置HTTPS虚拟服务器支持V2ray
vi /etc/httpd/extra/httpd-ssl.conf

vi /usr/local/apache/conf/extra/httpd-ssl.conf

以如下path,端口为例:
 “path”: “/XXXXXXX_Path”
端口:10000

在<VirtualHost _default_:443>内添加:

   <LocationMatch “/XXXXXXX_Path”>
    ProxyPass ws://127.0.0.1:10000/XXXXXXX_Path upgrade=WebSocket
    ProxyAddHeaders Off
    ProxyPreserveHost On
    RequestHeader set Host %{HTTP_HOST}s
    RequestHeader set X-Forwarded-For %{REMOTE_ADDR}s
   

重启Apache:
service httpd restart

品葱用户 **小君撫

Iloveccp555** 评论于 2020-03-02

补充一点,网页上传可以用宝塔面板搞定,可以先安个宝塔面板超级好用

宝塔这种东西我是不敢装到机器上的,那个界面浓浓的国内广告风格鬼知道有多少后门。实在需要web操作装个kod只给index那几个文件夹权限就够了

本质上来说,所有一键安装、懒人包之类的我都挺排斥的,怕留后门

品葱用户 Jupiter 评论于 2020-03-03

godaddy續費有點貴,爲這種目的買域名的話namesilo甚至freenom就行了

品葱用户 民小一个 评论于 2020-03-03

感觉比白话文教程还要亲民。
大神有时间可以出一篇trojan的

品葱用户 熊熊 评论于 2020-03-02

沉默前輩辛苦了啊!其實在找到那種付費的VPN之前也想試試自己假設的,但是感覺…
可能我還是老老實實買付費的那種好了QAQ

品葱用户 **小君撫

icgomsz** 评论于 2020-03-04

脚本都比较简单,可以审查

然而那个v2ray233 的脚本就有传什么东西,在GitHub上被人看出来了后来他删了,不过到现在还是有屏蔽几个网站,宝塔这种盈利性的应用就更别说了,而且宝塔那么多代码你审查得过来吗

品葱用户 **小君撫

Nekoeromon** 评论于 2020-03-03

是不是要用dnspod转一下好一点?

那一样还是会经过cf,或者你可以用国内备案过的域名做CDN,但是这相当于把你的VPS暴露给中共了

品葱用户 **民小一个

沉默的广场** 评论于 2020-03-03

在此列出一些外资VPS提供商,这里列出的VPS网上已有大量测评,可靠性有保证。但如果使用中出现问题,…

virmarch背景似乎存在一点问题。据说之前搞促销的时候甚至直接搞了个墙内meme的表情包,“KVM滞销,帮帮我们”(来源未知,因为我没参与促销活动)

品葱用户 民小一个 评论于 2020-03-03

一个小小的问题,搭配esni,doh使用会不会太不自然了反而引起怀疑,甚至被重点关照。大概就是“这个人用这么多超前的技术竭力隐藏自己的访问行为究竟在想干什么”
虽然作为机器的GFW大概想不明白这些事情,但是作为活人的那些网安什么的或许会引起注意。
匿名的基础是与无数的正常流量和光同尘以此来规避追踪,包括伪装成HTTPS流量,用太多超前的,主流还没有广泛采用的比如esni,doh会不会反而变得显眼…

品葱用户 **沉默的广场

民小一个** 评论于 2020-03-02

感觉比白话文教程还要亲民。大神有时间可以出一篇trojan的

其实搭建trojan已经有人写过非常详细的教程了:
(外链注意)https://trojan-tutor.github.io/2019/04/10/p41.html

简单来说,Trojan相当于Socks6 over TLS (对,是socks6)。为了防止主动探测,它在socks协议的头部加了一段hash,如果hash和预设的认证信息对不上,就转发给http服务器。因此在墙看来,Trojan服务器的行为和https服务器是完全一样的。

Trojan的优点是建立连接延迟小。数据包从客户端到服务器走一个往返,就叫一个RTT。对于一台设在美国的翻墙代理,数据包从中国到美国一个往返,至少需要150+ms。如果协议设计不合理,需要多个RTT建立连接,延迟就非常高。Trojan的握手数据包里夹带应用层数据,因此Trojan建立连接只需要一次TLS1.3握手,再算上TCP握手,Trojan建立连接只需要2个RTT。

Trojan的缺点是不支持CDN。几乎所有的免费CDN服务都不支持自定义应用层协议,只有CDN支持的协议(http1.1,websocket)才可以用CDN反代。Trojan可以看作一种特殊的socks协议,因此不能穿过CDN。

这里多说一句,vmess+http2+tls这种搭配用CDN反代,性能(可能)会下降。即使如cloudflare,截至目前也不是100%支持http2的。从CDN到源服务器那一段会走http1.1,可能会导致性能下降。

品葱用户 沉默的广场 评论于 2020-03-01

在此列出一些外资VPS提供商,**主要是为了给出一些直观的参考,说明自建翻墙服务的成本相对较低。**这里列出的VPS网上已有大量测评,可靠性有保证。但如果使用中出现问题,我也无法为此负责。
(以下信息可能会变动,供参考。此处价格单位是人民币)

  • Bandwagon:流量1TB/月,价格28元/月。
  • Vultr IPv4:流量0.5TB/月,价格24.5元/月
  • Vultr IPv6:流量0.5TB/月,价格17.5元/月
  • VIRMACH:流量0.5TB/月,价格8.75元/月
  • RamNode:流量1TB/月,价格21元/月
  • OneVPS:流量2TB/月,价格35元/月
  • ChangeIP:流量无限,价格14元/月
  • INVS:流量无限,价格10元/月

搭建V2Ray需要的配置很低,一般单核CPU,256MB内存就足够3-4个人看YouTube了。廉价VPS的配置都差不多(单核CPU,几百MB内存),出口带宽一般比较高(1Gbps,约合100MB/s)。挑选这类VPS最直观的指标就是价格和流量。

IP段,网络质量也是重要的指标,但这些指标无法直接给出,如果有特殊需求(比如看Netflix,比特币匿名付款),需要在网上多找相关测评。

总之,VPS的性价比很高,就是最廉价的VPS看高清Youtube也完全够用。如果愿意每个月花5美元以上,足够买到网络质量非常高,流量无限的机器。

品葱用户 **沉默的广场

DDS** 评论于 2020-03-01

借楼,补充一下配置时经常遇到的问题和解决方案
-——
1. 没有Nginx安装源
某些VPS商家提供的系统中,没有带nginx的安装源。因此在运行V2Ray和Nginx的一键安装命令时会出现以下错误:

Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: xxxxxx
* extras: xxxxxx
* updates: xxxxxx
No package nginx available.
Error: Nothing to do

解决办法:手动添加安装源即可,根据你的系统版本,运行以下命令:
(2020,4月更新)
CentOS7:(这是大多数VPS的系统版本)
rpm -ivh https://nginx.org/packages/centos/7/x86_64/RPMS/nginx-1.18.0-1.el7.ngx.x86_64.rpm

CentOS8:
rpm -ivh https://nginx.org/packages/centos/8/x86_64/RPMS/nginx-1.18.0-1.el8.ngx.x86_64.rpm

CentOS6:
rpm -ivh https://nginx.org/packages/centos/6/SRPMS/nginx-1.18.0-1.el6.ngx.src.rpm

2. V2Ray安装问题
换成以下一键命令:
yum install -y curl && yum install -y nginx && bash <(curl -L -s https://install.direct/go.sh)

3. 使用IPv6
Nginx不会主动监听IPv6地址,如果配置了AAAA记录,需要在端口号前加上[::]:
填好之后:

   
listen \[::\]:80;  
listen \[::\]:443 ssl http2;

4. 提示“重定向次数过多”
登录cloudflare,在网站管理界面,点【SSL/TLS】。
在页面的四个选项中,选【full】。(默认为【flexible】)

5. 客户端出现如下502错误
[Warning] failed to handler mux client connection > v2ray.com/core/proxy/vmess/outbound: failed to find an available destination > v2ray.com/core/common/retry: [v2ray.com/core/transport/internet/websocket: failed to dial WebSocket > v2ray.com/core/transport/internet/websocket: failed to dial to (wss://你的域名): 502 Bad Gateway > websocket: bad handshake] > v2ray.com/core/common/retry: all retry attempts failed
原因:Nginx无法把流量转发给V2Ray,原因是没有关闭SELinux。
解决办法:按照3.3节的方法,关闭SELinux。输入:
setsebool -P httpd_can_network_connect 1 && setenforce 0
即可

品葱用户 **晔晔不是个萌妹

chdy1018** 评论于 2020-03-03

vps除了谷歌能免费用一年,一般都很贵的吧,一个月几百块谁扛得住呢

有很多便宜的,甚至一年10刀的(70元人民币),纯翻墙够用了

品葱用户 **平平无奇

Jason_Leung** 评论于 2020-03-04

修改下配置就可以了。
把配置文件里面最后三行:index index.html index.htm index.php;
location ~ .*\.(js|jpg|JPG|jpeg|JPEG|css|bmp|gif|GIF|png)$ { access_log off; }
location / { index index.html; }
}
修改为:location / {
root /usr/share/nginx/html/;
index index.html index.php;
}

location ~ \.php$ {
root /usr/share/nginx/html/;
}
}
保存,重启nginx配置。登录你的域名没错的话就可以看到网站已经成功搭建了。

品葱用户 小君撫 评论于 2020-03-03

支持一下,另外多嘴一句,最近cf cdn网络质量极烂,套了cdn很容易没速度

品葱用户 Chinazi1984 评论于 2020-03-02

g感谢分享,看不懂

品葱用户 heliotrope 评论于 2020-03-02

還有一個域名註冊網叫namecheap,也是頗廉價的(特指首次使用域名的第一年)

品葱用户 历史里的罪人 评论于 2020-03-07

成功配置,以下介绍一下我的经验

1.Bitvise 的超时问题

使用该软件时,常常会遇到如下提示:

The SSH session has terminated with error. Reason: Error class: LocalSshDisconn, code: ByApplication, message: FlowSshPacketDecoder: unresponsiveness timeout.

个人看法是因为服务器超时,即无操作指令输入

解决方案:

将/etc/ssh 路径下的sshd_config文件 添加:

ClientAliveInterval 60

ClientAliveCountMax 10

两行文字。第一行是要求服务器每隔60S发送心跳。第二行是当10次本地无响应时关闭连接。

可以将该文件复制到本地,修改后再上传,为保险起见可重启服务器

2. Nginx 安装问题

某些centOS的yum源无法安装Nginx,建议使用博主的方法:

引用自博主的回复:

和上面那位一样,你的VPS的操作系统,没有带nginx的安装源,所以无法自动下载安装。
解决办法:换安装源,根据你的系统版本,运行以下命令:

centos7:(大多数服务器的版本)
rpm -ivh https://nginx.org/packages/centos/7/x86_64/RPMS/nginx-1.16.1-1.el7.ngx.x86_64.rpm

centos8:
rpm -ivh https://nginx.org/packages/centos/8/x86_64/RPMS/nginx-1.16.1-1.el8.ngx.x86_64.rpm

Centos6:
rpm -ivh https://nginx.org/packages/centos/6/SRPMS/nginx-1.8.1-1.el6.ngx.src.rpm

3. Nginx 安装后可以访问页面,但页面提示404
原因:使用

tail -n 20 /var/log/nginx/error.log

发现:

 错误提示显示:"/etc/nginx/html/index.html" is not found

当然,前面的回复其他人建议修改配置。但本人发现

/etc/nginx/目录下

仅仅是少了

/html/index.html

建议在该目录下新增一个html文件夹,并且在本地创建index.html 文件并输入任意文字后上传到

/etc/nginx/html/下

如果访问成功,继续博主的步骤向html文件夹上传整个网站文件。

品葱用户 sousou 评论于 2020-03-02

海外的CDN加速太慢了,如果IP被干了再用吧,平时就裸跑了。

品葱用户 **沉默的广场

p2p123** 评论于 2020-03-02

使用 caddy 替换 Nginx 如何? 

理论上caddy配置要比nginx简单,因为可以自动配置证书。但caddy需要自己配置systemd守护进程,官方提供的脚本有坑,需要修改。此外caddy还有其它一些配置,对程序员很简单,但给新手增加了难度。

综上教程里用nginx,只要简单复制粘贴命令,就可以搞定。

品葱用户 **沉默的广场

这是小怪兽呀** 评论于 2020-03-04

3.3 安装V2Ray和NginxV2Ray和Nginx可以一键安装,把下列命令复制粘贴到控制台,运…

你的系统是CentOS吗?如果是CentOS,把这条命令拆开,分开运行:

yum install -y curl
yum install -y nginx
bash -c “$(curl -L -s https://install.direct/go.sh)"

有些系统最后一条会出错,如果第三条报错,试试运行这个:
bash <(curl -L -s https://install.direct/go.sh)

也可以用这个一键:
yum install -y curl && yum install -y nginx && bash <(curl -L -s https://install.direct/go.sh)

品葱用户 **沉默的广场

Jason_Leung** 评论于 2020-03-03

 大佬你好,v2ray脚本那遇到了困难,请问怎么解决yum install -y nginx && …

和上面那位一样,你的VPS的操作系统,没有带nginx的安装源,所以无法自动下载安装。
解决办法:换安装源,根据你的系统版本,运行以下命令:

centos7:(大多数服务器的版本)
rpm -ivh https://nginx.org/packages/centos/7/x86_64/RPMS/nginx-1.16.1-1.el7.ngx.x86_64.rpm

centos8:
rpm -ivh https://nginx.org/packages/centos/8/x86_64/RPMS/nginx-1.16.1-1.el8.ngx.x86_64.rpm

Centos6:
rpm -ivh https://nginx.org/packages/centos/6/SRPMS/nginx-1.8.1-1.el6.ngx.src.rpm

品葱用户 **猫猫村村民

一条大河波浪宽** 评论于 2020-03-05

我vps用的谷歌云,在Bitvise SSH这一步失败了,总是显示Authentication ab…

我一开始也是,后来搞定了
先进网页打开ssh连接 按步骤输入以下代码
1.sudo -i
2.passwd
(两次输入密码)
3.sed -i ’s/PermitRootLogin no/PermitRootLogin yes/g’ /etc/ssh/sshd_config
4.sed -i ’s/PasswordAuthentication no/PasswordAuthentication yes/g’ /etc/ssh/sshd_config
5.reboot
6.用你刚设定密码登陆Bitvise

品葱用户 kking159632 评论于 2020-03-05

都配置好了,网站也可以打开,但是翻不了,不知道为什么。

品葱用户 **东亚战螂

沉默的广场** 评论于 2020-03-06

你前面自动配置证书用的是certbot吗?为什么证书会在网页路径下?usr/share/nginx/…

是用的certbot,我的/etc/nginx/conf.d/下默认有个ssh.conf,里面看到把usr/share/nginx/这个路径添加了,貌似nginx默认用的这个配置文件,没去找在defaul.conf中指定的certbot生成的那个证书。然后改了default.conf为nginx.conf,好像nginx就用了nginx.conf这个配置文件了,就能找到正确的证书了。

品葱用户 MCMXIX 评论于 2020-03-05

写的很详细呢!
这里说一下v2ray的缺点,配置链条逻辑非常混乱,各个模块之间互相干扰。不出问题还好,一有问题,不管是自己查错还是别人帮忙都非常困难。

另外,CloudFlare目前几乎无法使用,丢包严重,时断时续,换了很多ip都一样不行。但是v2ray直连是没有问题的,目前没有发现任何干扰或限流的情况。

品葱用户 江小千 评论于 2020-03-13

提醒一下,截图隐藏你的客户ID,要不然可能会被社工的!
发帖前一定要检查一下有没有信息暴露的问题

品葱用户 **历史里的罪人

ilovejp** 评论于 2020-03-06

为何我把DNS改成CloudFlare的DNS时候,一定要让我输入IP地址?可是CloudFlare…

你可以ping一下CLoudflare给你的域名服务器,上面会显示该域名服务器的地址,你填进去就好。

品葱用户 **沉默的广场

qianji** 评论于 2020-03-03

1. 第2配置文件,用记事本配置吗?2. 配置文件里是TLS V1.2,怎么用TLS 1.3 ?

记事本就可以编辑,不过推荐notepad++
网页下载地址:
https://notepad-plus-plus.org/downloads/

直接下载链接(7.8.4):
https://github.com/notepad-plus-plus/notepad-plus-plus/releases/download/v7.8.4/npp.7.8.4.Installer.x64.exe

把TLSv1.2那一行改成TLSv1.2 TLSv1.3就可以了

品葱用户 qianji 评论于 2020-03-02

1. 第2配置文件,用记事本配置吗?
2. 配置文件里是TLS V1.2,怎么用TLS 1.3 ?

品葱用户 p2p123 评论于 2020-03-03

使用 caddy 替换 Nginx 如何?

品葱用户 **jzxivne

沉默的广场** 评论于 2020-03-02

理论上caddy配置要比nginx简单,因为可以自动配置证书。但caddy需要自己配置systemd…

如果要v2ray不走ws走http/2必须用caddy。http/2本人没试过,相传比ws快,但又据说没有快多少没必要用。其它情况两个都差不多,我自己用的nginx

品葱用户 **icgomsz

小君撫** 评论于 2020-03-03

宝塔这种东西我是不敢装到机器上的,那个界面浓浓的国内广告风格鬼知道有多少后门。实在需要web操作装个…

脚本都比较简单,可以审查

品葱用户 **这是小怪兽呀

沉默的广场** 评论于 2020-03-04

补充到1楼了。

3.3 安装V2Ray和Nginx

V2Ray和Nginx可以一键安装,把下列命令复制粘贴到控制台,运行即可。
这一步就不行了啊

品葱用户 **这是小怪兽呀

沉默的广场** 评论于 2020-03-03

你的系统是CentOS吗?如果是CentOS,把这条命令拆开,分开运行:yum install -y…

谢谢大佬 感谢感谢 解决啦 麻烦您啦 这一步又出问题了 然后按同样的步骤上传nginx配置文件,Nginx的配置文件存储在 这一步有错误提示

品葱用户 **沉默的广场

这是小怪兽呀** 评论于 2020-03-03

谢谢大佬 感谢感谢 解决啦 麻烦您啦 这一步又出问题了 然后按同样的步骤上传nginx配置文件,Ng…

我也不知道到底是什么错误,你可以发一下错误提示信息。估计是没有conf.d目录或者权限不够?
试一下这个:命令窗口里建一个:
mkdir /etc/nginx/conf.d
如果还不行:
chmod 777 /etc/nginx/conf.d

品葱用户 **这是小怪兽呀

沉默的广场** 评论于 2020-03-04

你这个前一步有问题,可能是nginx没安装上。再试试yum -y install nginx运行完以…

我用的是bash <(curl -L -s https://install.direct/go.sh)这个 显示成功了 再输入一遍就说已经最新版本了Latest version v4.22.1 is already installed.你说的yum install -y curl
yum install -y nginx
bash -c “$(curl -L -s https://install.direct/go.sh)" 这三个都不行 输入完bash <(curl -L -s https://install.direct/go.sh) 这个之后V2Ray的配置文件弄好了 路径栏里输入/etc/nginx/conf.d这个时候就是错误提示 输入 yum -y install nginx提示这个
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: mirror.jaleco.com
* extras: mirrors.rit.edu
* updates: mirror.mi.incx.net
No package nginx available.
Error: Nothing to do

品葱用户 **沉默的广场

这是小怪兽呀** 评论于 2020-03-04

我用的是bash <(curl -L -s https://install.direct/go.sh

这是yum安装源的问题。你的VPS自带的配置有一些问题。可能是服务器到软件发行源的网络不通,也有可能是软件发行服务器的问题。总之网络不通导致nginx没法自动下载安装。(据查有一些系统yum没有带nginx)

解决办法:换安装源,如果是centos7,运行以下命令:
rpm -ivh https://nginx.org/packages/centos/7/x86_64/RPMS/nginx-1.16.1-1.el7.ngx.x86_64.rpm

centos8:
rpm -ivh https://nginx.org/packages/centos/8/x86_64/RPMS/nginx-1.16.1-1.el8.ngx.x86_64.rpm

Centos6:
rpm -ivh https://nginx.org/packages/centos/6/SRPMS/nginx-1.8.1-1.el6.ngx.src.rpm

如果是其它centos版本,需要在这儿找安装源:
https://nginx.org/packages/centos/

品葱用户 芙蓉路 评论于 2020-03-04

想問一下樓主,爲什麼V2Ray就會支持Webrocket, 但是Trojan就是不支持的呢?
還有,如果Trojan想要走CloudFlare的CDN應該怎麼操作呢?
對於第二個問題,我已經用過各種搜索引擎搜索。
但是,得到的答案都是:世界加錢可及。那麼,Cloudflare裏應該選用哪些套餐呢?

品葱用户 **Jason_Leung

这是小怪兽呀** 评论于 2020-03-04

真抱歉 实在是太麻烦您啦 终于搞好了 真的谢谢您 真不好意思 还需要向您请教一下 网页一开打就是40…

同到这步就nginx 404 没有红色界面,请大佬解答!

品葱用户 Jason_Leung 评论于 2020-03-03

 大佬,我把模板传上去还是nginx 404 我重新设置了好几次都这样,请问是哪里配置错了吗?

品葱用户 **dasfe

jzxivne** 评论于 2020-03-05

教程很详细,谢谢作者!补充几点:

很好的補充。 關於第7點,可以在瀏覽器裝個SwitchyOmega,設置特定網站走代理,這樣應該可以避免挂著代理訪問國内網站。

品葱用户 楚方城 评论于 2020-03-04

目前暂时用的一键脚本,手动搭建不会

品葱用户 **mockexam

一条大河波浪宽** 评论于 2020-03-04

参照这个教程自建V2ray,以前的一键脚本怎么办?还会起作用吗?如果还有作用,怎么删除?

重裝系統

品葱用户 mobishi 评论于 2020-03-05

我的所有步骤都是成功的,但是就是没有办法用,请问这个怎么解决?

品葱用户 **擇路

kking159632** 评论于 2020-03-22

[

连接后出现这个是什么问题呀?2020/03/05 12:31:32 [Warning] failed…

](https://pincong.rocks/article/item_id-282819#answer_list_282819https://pincong.rocks/article/item_id-282819#answer_list_282819")
我碰到了同样的问题,请问您解决了吗

品葱用户 QMetaObject 评论于 2020-03-07

非常感谢!花了一个上午配置完成了!

中途遇到了两个问题,分享给大家。

1. 购买了(dot) cn的域名
买了(dot) cn的域名以后发现需要身份证实名认证才能使用。。。。真是被自己蠢到了,所以又买了其他的。

2. nginx服务启动以后访问404
检查了,应该是nginx配置里没有指向网页的路径。可能是不同系统装nginx的路径有区别?
把配置文件的最后几行改正这样,就好了

    # index index.html index.htm index.php;  
    location ~ .\*\\.(js|jpg|JPG|jpeg|JPEG|css|bmp|gif|GIF|png)$ {  
	access\_log off;   
	root /usr/share/nginx/html;  
	}  
    location / { root /usr/share/nginx/html; }  
}

品葱用户 ilovejp 评论于 2020-03-06

为何我把DNS改成CloudFlare的DNS时候,一定要让我输入IP地址?可是CloudFlare又没有提供IP地址
https://images.weserv.nl/?url=https://i.imgur.com/RXq2t01.png

品葱用户 **Sam_PC

jzxivne** 评论于 2020-03-07

教程很详细,谢谢作者!补充几点:

macOS版本的v2ray我用的是官方的:
https://v2ray.com/chapter_00/install.html

品葱用户 梁啓超 评论于 2020-03-08

其实nginx的配置中加几行代码就可以实现反向代理(俗称镜像),不用去上传模板网站,个人也觉得也更安全,前提是你做的镜像站能在墙内直连,没有什么敏感内容,最好是图片站之类的。

下面贴出反向代理部分的单独代码

listen 80;  
    server\_name  www.XXX1.com;    
    location / {  
        proxy\_pass https://www.XXX2.com;  
        proxy\_redirect     off;  
        proxy\_connect\_timeout      75;   
        proxy\_send\_timeout         90;   
        proxy\_read\_timeout         90;   
        proxy\_buffer\_size          4k;   
        proxy\_buffers              4 32k;   
        proxy\_busy\_buffers\_size    64k;   
        proxy\_temp\_file\_write\_size 64k;   
     }

解释一下,www.XXX1.com为你自己注册的域名,www.XXX2.com为你想镜像网站的网址。推荐几个网站:Free Stock  / Unsplash  /  Pexels  ,这几个站是著名的免费图片站,国内好多自媒体都在使用上面的图片
下面贴出nginx的一套常用配置(仅供参考)

server {  
    listen 443 ssl;  ##是你用客户端连接的端口,可自定义,推荐443端口  
    ssl on;                                                           
    ssl\_certificate       /key/certificate.pem;  ##你存放证书的位置,切勿照抄  
    ssl\_certificate\_key   /key/key.key;  ##你存放密钥的位置,切勿照抄  
    ssl\_protocols         TLSv1 TLSv1.1 TLSv1.2;                      
    ssl\_ciphers           HIGH:!aNULL:!MD5;  
  
    listen 80;  
    server\_name  www.XXX1.com;    
    location / {  
        proxy\_pass https://www.XXX2.com;  
        proxy\_redirect     off;  
        proxy\_connect\_timeout      75;   
        proxy\_send\_timeout         90;   
        proxy\_read\_timeout         90;   
        proxy\_buffer\_size          4k;   
        proxy\_buffers              4 32k;   
        proxy\_busy\_buffers\_size    64k;   
        proxy\_temp\_file\_write\_size 64k;   
     }  
  
    location /etc/ws {  ##路径可自定义,需和客户端保持一致  
        proxy\_redirect off;  
        proxy\_pass http://127.0.0.1:44222; ##与V2ray中设置的监听端口一致  
        proxy\_http\_version 1.1;  
        proxy\_set\_header Upgrade $http\_upgrade;  
        proxy\_set\_header Connection "upgrade";  
        proxy\_set\_header Host $http\_host;  
        proxy\_read\_timeout 300s;  
    }  
}

品葱用户 **Schalotte

沉默的广场** 评论于 2020-03-08

你看一下nginx能不能工作?一般报这个错是因为v2ray工作不正常,或者无法转发流量导致。因为配置…

还是不行,netstat -nltp 返回的结果是
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 597/nginx: master p
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 566/sshd
tcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN 597/nginx: master p
tcp6 0 0 :::8964 :::* LISTEN 559/v2ray
tcp6 0 0 :::80 :::* LISTEN 597/nginx: master p
tcp6 0 0 :::22 :::* LISTEN 566/sshd

我把 log 也开启了,还调到了 debug 级别,但手机连接失败时服务器端依然没有显示错误信息,只说了 v2ray started,是不是说明手机根本就没连到树莓派上啊,这该咋办?

另外再问个问题,我 vps 和 树莓派用的都是同一个域名,但在树莓派用 certbot 注册完 ssl 证书后,vps 的证书不会无效吗(而且我把 Cloudflare 的 A 记录也改成树莓派的了,因为是 ipv6,所以是 AAAA 记录)?为什么在这之后,我依然可以联通 vps 的 v2ray 呢?

品葱用户 叁口葱 评论于 2020-03-07

终于成功了,又快又不卡,谢谢楼主分享
说一下自己遇到的问题
-———————————————————————

在**【fig1.4.10】里,记得把TSL从默认的flexible改为full**,否则在nginx搭完后,会出现 “多次重定向“ 问题。

这个问题时由于CloudFlare的HTTP和HTTPs多次重定向导致的

品葱用户 **Schalotte

Schalotte** 评论于 2020-03-07

我试了下 netcat -nv xxx 443,ipv4 的话是通的,v6就不通,请问是因为这个原因…

终于搞定了,汇报一下,原因是按照 lz 的 nginx 配置,是不会监听 ipv6 的,需要在配置文件中的 listen 后面加上 [::]:,例子: listen [::]:443 ssl http2; 这样就成功啦,哈哈。

品葱用户 WhitTheNewBlu 评论于 2020-03-07

域名在freenom上申请不好吗?反正免费。

品葱用户 **擇路

沉默的广场** 评论于 2020-03-21

[

外资VPN/VPS支付宝走的是国际收汇通道,中间不会透露个人购买信息。缺点是会多一点手续费,不过这已…

](https://pincong.rocks/article/item_id-307120#answer_list_307120https://pincong.rocks/article/item_id-307120#answer_list_307120")
谢谢回复,但是我在关闭SELunix 的时候 命令setsebool -P httpd_can_network_connect 1 && setenforce 0 会报错,因此我采用了零时的关闭命令才可以翻墙。
libsepol.context_from_record: type rhsmcertd_config_t is not defined
libsepol.context_from_record: could not create context structure
libsepol.context_from_string: could not create context structure
libsepol.sepol_context_to_sid: could not convert system_u:object_r:rhsmcertd_config_t:s0 to sid
invalid context system_u:object_r:rhsmcertd_config_t:s0

品葱用户 沉默的广场 评论于 2020-03-14

nginx配置文件(带log)

  
  
  
server {  
    ### 1:  
    server\_name ●●●●●●●●●●●●;  
  
    listen 80;  
    rewrite ^(.\*) https://$server\_name$1 permanent;  
    if ($request\_method  !~ ^(POST|GET)$) { return  501; }  
    autoindex off;  
    server\_tokens off;  
}  
  
server {  
    ### 2:  
    ssl\_certificate /etc/letsencrypt/live/●●●●●●●●●●●●/fullchain.pem;  
  
    ### 3:  
    ssl\_certificate\_key /etc/letsencrypt/live/●●●●●●●●●●●●/privkey.pem;  
  
    ### 4:  
    location /★★★★★★★★★★★★  
    {  
        proxy\_pass http://127.0.0.1:8964;  
        proxy\_redirect off;  
  
        proxy\_http\_version 1.1;  
        proxy\_set\_header Upgrade $http\_upgrade;  
        proxy\_set\_header Connection "upgrade";  
        proxy\_set\_header Host $host;  
  
        tcp\_nodelay on;  
        keepalive\_requests 25600;  
        keepalive\_timeout 3600 3600;  
        proxy\_buffering off;  
        proxy\_buffer\_size 8k;  
    }  
  
    listen 443 ssl http2;  
    server\_name $server\_name;  
    charset utf-8;  
  
    tcp\_nodelay on;  
    keepalive\_timeout 3600 3600;  
  
    ssl\_protocols TLSv1.2;  
    ssl\_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!3DES:!MD5:!PSK;  
    ssl\_prefer\_server\_ciphers on;  
  
    ssl\_session\_cache shared:SSL:60m;  
    ssl\_session\_timeout 1d;  
    ssl\_session\_tickets off;  
  
    ssl\_stapling on;  
    ssl\_stapling\_verify on;  
    resolver 8.8.8.8 8.8.4.4 valid=300s;  
    resolver\_timeout 10s;  
  
    # Security settings  
    if ($request\_method  !~ ^(POST|GET)$) { return 501; }  
    add\_header X-Frame-Options DENY;  
    add\_header X-XSS-Protection "1; mode=block";  
    add\_header X-Content-Type-Options nosniff;  
    add\_header Strict-Transport-Security max-age=31536000 always;  
    autoindex off;  
    server\_tokens off;  
  
    # 新增  
    access\_log /var/log/nginx/nginx\_access.log;  
    error\_log /var/log/nginx/nginx\_error.log;  
  
    index index.html index.htm index.php;  
    root /usr/share/nginx/html;  
    location ~ .\*\\.(js|jpg|JPG|jpeg|JPEG|css|bmp|gif|GIF|png)$ { access\_log off; }  
}  

品葱用户 沉默的广场 评论于 2020-03-15

v2ray配置(带log)

{  
"inbound": {  
    "protocol": "vmess",  
    "listen": "127.0.0.1",  
 "port": 8964,  
 "settings": {"clients": \[  
        {"id": "◆◆◆◆◆◆◆◆◆◆◆◆"}  
    \]},  
 "streamSettings": {  
 "network": "ws",  
 "wsSettings": {"path": "/★★★★★★★★★★★★"}  
    }  
},  
  
"outbound": {"protocol": "freedom"},  
  
"log": {  
  "access": "/var/log/v2ray/v2ray\_access.log",  
  "error": "/var/log/v2ray/v2ray\_error.log",  
  "loglevel": "warning"  
}  
}  

品葱用户 **沉默的广场

不鳥你** 评论于 2020-03-15

好的,是這個嗎?【Linux Centos 7.1503.01 X86 64 Minimal Gen…

对。只用来翻墙的vps没有关系。

品葱用户 **沉默的广场

新幹線絕讚建設中** 评论于 2020-03-15

我改完log之后ws文件访问不了502错误了….

我测了一下配置文件应该没有问题。
这个配置文件是保存在/root/下面,如果出问题就是没有这个目录的权限。
-———-
编辑了一下配置文件的路径,nginx日志扔到/var/log/nginx下面
v2ray日志扔到/var/log/v2ray下面。

配置好以后打开v2ray登一下。重点看v2ray_access.log这个文件就可以了

品葱用户 沉默的广场 评论于 2020-03-22

自行翻页

品葱用户 **KP31

维尼** 评论于 2020-03-22

[

谢谢大佬,但是设置好了PC上不了外网,但是分享到手机端就可以,请问是什么问题吗?

](https://pincong.rocks/article/item_id-309481#answer_list_309481https://pincong.rocks/article/item_id-309481#answer_list_309481")另外记得给V2RayN的可执行文件设置管理员权限,不然它改不了系统代理设置

品葱用户 asdjfoiasj 评论于 2020-03-30

本人常駐PTT、天涯、巴哈youtube,最近剛來的品蔥

以前總認為中國很強大,經常在PTT上幫中國說好話

看見中國的負面新聞會有恨鐵不成鋼的想法

最讓我驚訝的是一則中國新聞,寫黃書的一位作者被判刑關11年

本人也算是寫作的創作者,這則新聞讓我對中國極度不爽

算是第一次改變我想法的開端

某天上了天涯台灣版,從此走上反共反中的道路

誠心推薦所有擁有兩岸認知錯誤,對中國抱有錯誤期待想法的台灣人

去看看天涯台灣版,保證讓你永遠都不想替中國說好話

品葱用户 沉默的广场 评论于 2020-04-13

修正nginx配置一处问题:
配置文件里增加长连接:keepalive_timeout 3600 3600;
可以明显提高性能。

品葱用户 **霏艺Faye

goday** 评论于 2020-04-13

[

大佬,SSL证书多次安装后出现这样的提示,该怎么解决,感谢An unexpected error o…

](https://pincong.rocks/article/item_id-343920#https://pincong.rocks/article/item_id-343920#")
The most common rate limit of 50 certificates per domain per 7 days .
User can create a maximum of 10 Accounts per IP Address per 3 hours.
User can create a maximum of 500 Accounts per IP Range within an IPv6 /48 per 3 hours.

品葱用户 **霏艺Faye

沉默的广场** 评论于 2020-04-14

[

修正nginx配置一处问题:配置文件里增加长连接:keepalive_timeout 3600 36…

](https://pincong.rocks/article/item_id-343111#https://pincong.rocks/article/item_id-343111#")

挺好奇的,这个配置项对websocket也有效么?
主要是我没看过nginx的websocket那部分。。。没法评价。。。

以我的理解,websocket本身就是长连接才对。。。
CF的CDN也是nginx,keepalive_timeout 没有配置的话或者比你的短,你这个配置应该都是没有意义的才对

品葱用户 霏艺Faye 评论于 2020-04-14

写这么详细,还能给这么多人回答怎么解决bug,不容易啊,投入了这么时间和精力

品葱用户 霏艺Faye 评论于 2020-04-15

https://www.cloudflare.com/products/cloudflare-spectrum/

我发现cloudflare的CDN支持 任意 TCP / UDP 协议转发的【不止是HTTP 和HTTPS】!

但是只对付费用户有效

Cloudflare Spectrum is a reverse proxy product that extends the benefits of Cloudflare to all TCP/UDP applications.

品葱用户 yonghumin9 评论于 2020-04-27

Socks5 over http (SoP) 要不要研究一下?

品葱用户 SunY 评论于 2020-04-22

大神大神  终于成功啦  
虽然好像有一点点慢

品葱用户 xday2000 评论于 2020-04-25

请问使用cloudflare解析IP后,原ip就ping不通了这样正常吗?ping域名可以正常解析到ip,但是没有响应。直接pingIP也不行

在添加a记录之前ip是确认可用的,更换过两次ip出现同样的结果

另外一个情况是,这时候访问域名的话可以看到nginx的404页面,但是添加网页后就无法访问了。继续按照教程设置完毕,v2ray没有工作

我应该怎么查找问题所在呢

——————————————————————

发现关了vultr的防火墙后就ping通了……但是这样好像就没办法设置开通哪些端口。正在找解决办法

——————————————————————

呃,使用centos8之后问题解决……虽然也没找到问题在哪

——————————————————————

郁闷,又出现新问题

本来一切正常,只是速度感觉有点慢,所以安装了一下bbr,结果v2ray连不上了。但是网站还可以访问

v2rayN报错:
2020/04/25 17:22:16 [Warning] failed to handler mux client connection > v2ray.com/core/proxy/vmess/outbound: failed to find an available destination > v2ray.com/core/common/retry: [v2ray.com/core/transport/internet/websocket: failed to dial WebSocket > v2ray.com/core/transport/internet/websocket: failed to dial to (wss://xxx.xxx.xxx.xxx/xxxxxxxxxxx): > dial tcp xxx.xxx.xxx.xxx:443: connectex: No connection could be made because the target machine actively refused it.] > v2ray.com/core/common/retry: all retry attempts failed

打算再次重装一下看看

——————————————————————

原来centos8的内核仍然是4.1x,升级内核后问题全部解决

品葱用户 **jester

沉默的广场** 评论于 2020-04-28

老大好,我检查我的错误时,发现是解析域名时,在cloudflare的DNS输入A记录时,把IP地址输错了,导致后面安装VPS时找不到我的域名。
我回头重新开始,从买到域名开始重新按照你的步骤一步一步来,到了cloudflare的DNS增加2条记录时,只能增加一条名称为@的A记录,另一条名称为www的A记录增加不上保存不了,提示如下:
“DNS Validation Error (Code: 1004) A CNAME already exists with that host.”
说是已经存在了,可是我用windows ppowershell ‘PING"我的域名时,发现回复的不是我的VPS的ip,而是一个什么“104、24、118、198“之类的地址。
是不是需要把原来的记录删掉?我在cloudflare的DNS增加记录的页面里,把下面保存的记录一条不留的全部删掉了,退出后重新登录cloudflare的DNS,发现在DSN增加A记录的页面里,已经有3条记录,也没有理会它,就点击”Add record”, 却只能增加一条名字为@的记录,无法增加保存名字为“www"的A记录,不让保存,出现的提示就是上面说的:“DNS Validation Error (Code: 1004) A CNAME already exists with that host.”
我百度了一下,说是要删除什么才行,但是,又不知道怎么删出,在哪里删除原来的记录?还请老大教教怎么处理,我是小白,还请老大说详细点,谢谢您。(截图贴不上来,只能描述了)

品葱用户 **沉默的广场

goldxpx** 评论于 2020-04-28

[

我的系统是centos7,openssl版本不是1.1.1,能不能指点下,怎么才能启动tls1.3支持…

](https://pincong.rocks/article/item_id-337776#https://pincong.rocks/article/item_id-337776#")
补一下,启用TLS1.3
1. 安装依赖工具:

yum -y install gcc make perl pcre pcre-devel zlib zlib-devel

2. 下载openssl1.1.1g源码(2020年4月最新版本)

  
wget https://github.com/openssl/openssl/archive/OpenSSL\_1\_1\_1g.zip  
unzip OpenSSL\_1\_1\_1g.zip  
rm OpenSSL\_1\_1\_1g.zip && mv openssl-OpenSSL\_1\_1\_1g openssl  

3. 下载Nginx1.18.0源码(2020年4月最新版本)

  
wget https://nginx.org/download/nginx-1.18.0.tar.gz  
tar -xzvf nginx-1.18.0.tar.gz  
cd nginx-1.18.0  

4. 编译Nginx

  
./configure --with-openssl=../openssl --with-openssl-opt='enable-tls1\_3' --with-http\_ssl\_module --with-http\_gzip\_static\_module  
make && make install  

编译选项里面–with-openssl指定openssl位置,–with-openssl-opt=‘enable-tls1_3’这一句打开TLS1.3。
====================
Nginx安装完成后,二进制文件的位置在/usr/local/nginx/sbin下面,可以替换原来的Ngnix可执行文件。输入
/usr/local/nginx/sbin/nginx -V
可以查看编译后的版本和编译参数。

品葱用户 **jester

沉默的广场** 评论于 2020-04-27

[

yum install -y python36是安装python3.6,你的机器上python3.6…

](https://pincong.rocks/article/item_id-361171#https://pincong.rocks/article/item_id-361171#")

老大,你教程里凡是命令里带有“&&”,都表示两条命令合起来的吗?比如:
1、yum install -y python36 && pip3 install certbot
是表示:命令1)yum install -y python36
命令2)pip3 install certbot

比如2、yum install -y nginx && yum install -y curl && bash -c “$(curl -L -s https://install.direct/go.sh)"

命令1)yum install -y nginx
2)yum install -y curl
3)bash -c “$(curl -L -s https://install.direct/go.sh)"

是这样的吗?我之前把全部一起粘贴输入进入,没有反应,看了你解释说是3条命令时,我分开3条命令输入,程序才有反应.

品葱用户 unclesam888 评论于 2020-04-28

本新手给第一次接触的新手一个小建议:先去v2ry官网看一看,上面有很详细的教程,从简到繁,先把最简单的弄明白再来参考楼主的这个教程,就可能少走很多弯路。

品葱用户 沉默的广场 评论于 2020-05-19

由于临近两会和六四纪念日,预期网络封锁将会加剧,特来更新此文。

  • 增加了编译Nginx的内容(可启用TLS1.3和H2)。
  • 增加了自行选择Cloudflare节点的教程。

品葱用户 **沉默的广场

战略忽悠局** 评论于 2020-03-18

大佬你好,请问可以转载到我的个人博客上吗

可以的,不过需要注明作者和出处链接。

品葱用户 **jester

jester** 评论于 2020-04-30

[

老大您好:我上传第二个文件default.con时,怎么都切换不到/etc/nginx/conf.d…

](https://pincong.rocks/article/item_id-364544#https://pincong.rocks/article/item_id-364544#")
我看到这个问题的解决方案了,你在第一个评论里已经说出方案,我照那样做了,已经长传了第二个文件,谢谢您

品葱用户 战略忽悠局 评论于 2020-03-18

大佬你好,请问可以转载到我的个人博客上吗

品葱用户 **Christophe

沉默的广场** 评论于 2020-04-25

[

yum源或者DNS配置问题

](https://pincong.rocks/article/item_id-357760#https://pincong.rocks/article/item_id-357760#")
大佬,我刚才随便试了一下,问题好像就出在DNS上,任意wget一个东西
Resolving github.com (github.com)… 140.82.112.4
Connecting to github.com (github.com)|140.82.112.4|:443… failed: No route to host.
我这个VPS是只有IPv6,怎么解析出来IPv4地址了?
/etc/resolv.conf 是这样的
search xxx.xxx.de
options rotate
nameserver 2606:4700:4700::1111
nameserver 2606:4700:4700::1001
DNS服务器是我自己设置的。
不太明白怎么回事,该怎么办哪?
=====================
补充:惨了,刚查了一下,github.com好像压根没有AAAA DNS 记录。
======================
再次补充:我试着在本地安装V2Ray,执行./go.sh –local /root/xxx/v2ray-linux-64.zip得到
bash: ./go.sh: Permission denied
没招了。

品葱用户 **沉默的广场

jester** 评论于 2020-04-25

[

汇报老大如下:1、其他代理不知道有没有占用80和443端口,停止其他代理,安装VPS和配置VPS时是…

](https://pincong.rocks/article/item_id-357690#https://pincong.rocks/article/item_id-357690#")
你看下ping域名返回的是不是你VPS的IP,返回VPS的IP就说明域名解析没问题。

品葱用户 **沉默的广场

Christophe** 评论于 2020-04-24

[

大佬,还有一个问题。运行V2Ray安装脚本后提示Failed to fetch release in…

](https://pincong.rocks/article/item_id-357113#https://pincong.rocks/article/item_id-357113#")
yum源或者DNS配置问题

品葱用户 **jester

沉默的广场** 评论于 2020-04-30

[

在此列出一些外资VPS提供商,这里列出的VPS网上已有大量测评,可靠性有保证。但如果使用中出现问题,…

](https://pincong.rocks/article/item_id-277209#https://pincong.rocks/article/item_id-277209#")

老大您好:我上传第二个文件default.con时,怎么都切换不到/etc/nginx/conf.d目录下,我把电脑系统重新装了,也从其他地方下载重新安装了Bitvise SSH程序,病毒没有了。但是,还是无法切换到/etc/nginx/conf.d。我按照你说的输入命令:nginx -v,现实如下:
-——————————————————
-bash: nginx: command not found
-—————————————————-

我又从安装证书开始,重新开始输入命令,一直到安装V2RAY,显示如下:
-———————————————————————————-
。。。。。。。
IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at:
/etc/letsencrypt/live/www.lansejungle.live/fullchain.pem
Your key file has been saved at:
/etc/letsencrypt/live/www.lansejungle.live/privkey.pem
Your cert will expire on 2020-07-29. To obtain a new or tweaked
version of this certificate in the future, simply run certbot
again. To non-interactively renew *all* of your certificates, run
“certbot renew”
- Your account credentials have been saved in your Certbot
configuration directory at /etc/letsencrypt. You should make a
secure backup of this folder now. This configuration directory will
also contain certificates and private keys obtained by Certbot so
making regular backups of this folder is ideal.
- If you like Certbot, please consider supporting our work by:

Donating to ISRG / Let’s Encrypt: https://letsencrypt.org/donate
Donating to EFF: https://eff.org/donate-le

[root@li-shen ~]# echo “0 0 1 */2 * service nginx stop; certbot renew; service nginx start;” | crontab
[root@li-shen ~]# yum install -y nginx
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: centos.mirror.constant.com
* extras: mirror.wdc1.us.leaseweb.net
* updates: repo1.ash.innoscale.net
No package nginx available.
Error: Nothing to do
[root@li-shen ~]# yum install -y nginx && yum install -y curl && bash -c “$(curl -L -s https://install.direct/go.sh)"
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: centos.mirror.constant.com
* extras: mirror.wdc1.us.leaseweb.net
* updates: repo1.ash.innoscale.net
No package nginx available.
Error: Nothing to do
[root@li-shen ~]# nginx -v
-bash: nginx: command not found
[root@li-shen ~]#
-———————————————————————————
看样子是安装 nginx 没有成功,显示的No package nginx available,Error: Nothing to do
那我该怎么做呢?谢谢老大,不知道为什么安装不上

品葱用户 **沉默的广场

secret_uho** 评论于 2020-03-08

请问如果证书还在有效期内,想换服务器的话怎么把证书复制过去呢,我把letsencrypt文件夹复制过…

直接申请一个新证书就行,let’s encrypt有频率限制,可以先加–dry-run测试一下。

品葱用户 chdy1018 评论于 2020-03-03

vps除了谷歌能免费用一年,一般都很贵的吧,一个月几百块谁扛得住呢

品葱用户 秋月型驱逐舰凉月 评论于 2020-03-03

vps推荐呢vps推荐呢vps推荐呢vps推荐呢vps推荐呢vps推荐呢vps推荐呢vps推荐呢vps推荐呢vps推荐呢vps推荐呢vps推荐呢⊂(・▽・⊂)

品葱用户 Iloveccp555 评论于 2020-03-02

补充一点,网页上传可以用宝塔面板搞定,可以先安个宝塔面板超级好用

品葱用户 猫猫村村民 评论于 2020-03-02

求助,谷歌云vps怎么通过Bitvise SSH登录

品葱用户 space 评论于 2020-03-02

非常详细的教程,感谢作者的倾力相授。

品葱用户 葱葱那年 评论于 2020-03-03

教程非常详细,真的很花心思啊。感谢感谢,有不懂的会再向你学习。

品葱用户 **Nekoeromon

小君撫** 评论于 2020-03-03

支持一下,另外多嘴一句,最近cf cdn网络质量极烂,套了cdn很容易没速度

是不是要用dnspod转一下好一点?

品葱用户 sczxlsyx 评论于 2020-03-03

谢谢大佬的教程,先收藏了!凑字数凑字数凑字数

品葱用户 **沉默的广场

秋月型驱逐舰凉月** 评论于 2020-03-02

vps推荐呢vps推荐呢vps推荐呢vps推荐呢vps推荐呢vps推荐呢vps推荐呢vps推荐呢vp…

补充到1楼了。

品葱用户 **mamay5

沉默的广场** 评论于 2020-03-03

其实搭建trojan已经有人写过非常详细的教程了:(外链注意)https://trojan-tuto…

v2ray不会被墙么?

品葱用户 路过的名可 评论于 2020-03-03

这个牛。标记一下。等待以后用到

品葱用户 一条大河波浪宽 评论于 2020-03-04

参照这个教程自建V2ray,以前的一键脚本怎么办?还会起作用吗?如果还有作用,怎么删除?

品葱用户 DDS 评论于 2020-03-02

打印成PDF
PDF转图片,然后整个文章发图片

品葱用户 Copica 评论于 2020-03-03

~已删除~

品葱用户 wumengyi1020 评论于 2020-03-02

文章是好文章,我可以说给我点赞的人肯定跟我一样看不懂。

点击品葱原文参与讨论

最简单好用的 VPS,没有之一,注册立得 100 美金
comments powered by Disqus

See Also

V2Ray翻墙完全教程(WS+TLS+Web)

前言 本文是搭建V2Ray服务器(ws+tls+web)的完整教程。除了搭建V2Ray+ws+tls+web的过程,还包括配置CDN隐藏IP,打开BBR加速,以及简单配置防火墙防探测。最近(2020年初开始)防火墙加大了封杀VPN的力度,很 …

免翻墙上品葱教程(DoH+ESNI直连)

安全提示:本文介绍的方法只作为临时手段。如果打算长期活动,一定要挂代理。如果要从事高风险活动,请使用VPN+Tor。 截至2020年初,防火墙封杀网站的手段有: 关键词过滤:随着https的普及,这种方法已经不常见。 封锁IP:主要用来屏 …

免翻墙上品葱教程(DoH+ESNI直连)

安全提示:本文介绍的方法只作为临时手段。如果打算长期活动,一定要挂代理。如果要从事高风险活动,请使用VPN+Tor。 截至2020年初,防火墙封杀网站的手段有: 关键词过滤:随着https的普及,这种方法已经不常见。 封锁IP:主要用来屏 …

在墙内什么平台冲塔最废号?如何方便地获取新账号?

品葱用户 我亲自注册 提问于 2/4/2020 RT 不冲塔是不可能不冲塔的,这辈子不可能不冲塔的。 就我个人来说,我爱在微博冲塔,炸号是家常便饭,但获取小号现在成为了我冲塔的阻碍。 之前有随便Google了个卖微博小号的网站,买了号,可当 …