欢迎光临
感受代码之美

centos7基于nginx搭建v2ray服务端配置vmess+tls+websocket完全手册

一直都是使用自建shadowsocks科学上网,服务很稳定,虽然v2ray出现了很久,但是没花心思研究两者之间有什么区别。后来无意间查询自己手机的上网记录,出现下图信息,我感觉还是让上网更隐蔽一点更好。

shadowsocks-tcp.jpg

怎么让手机上网记录看起来更正常一点呢?v2ray服务端配置vmess+tls+websocket就是一种解决方式,下面是我使用这种方式之后手机上网记录信息:

v2ray-ssl上网记录

接下来就是我实现上述情形的解决过程记录。

1.环境准备

  • VPS : 推荐一下DigitalOcean
  • 一个域名,推荐去godaddy注册,注册之前最好找一下优惠券;
  • vps部署Nginx并启用tls安装证书;

相关文章推荐:

请继续下一步之前,先依次完成下列步骤:

  • 注册一个自己的VPS服务器;
  • 注册一个自己的域名并解析到自己的VPS;
  • 登录VPS并安装部署Nginx;
  • 完成域名的https SSL安全证书启用;

只有完成上面的步骤在继续下面操作,才能实现v2ray服务端配置vmess+tls+websocket。

我的环境:

  • 服务器系统:Digitalocean CentOS 7.5 x64 ;
  • v2ray版本:v4.17.0;
  • nginx版本:nginx/1.14.2 (CentOS);
  • 证书:Let’s Encrypt certbot-0.31.0;
  • v2rayN:2.22

2.安装v2ray

安装过程很简单,只要能正常连接自己的VPS并进行登录,然后执行一下安装命令即可,安装过程参考:从零开始:史上最详尽V2Ray搭建图文教程,重要的接下来的配置过程。

3.配置v2ray服务端

假设你的域名是v2ray.com,并将二级域名hi.v2ray.com解析到你的VPS。

执行下面的命令,开始配置v2ray:

[[email protected] ~]# vi /etc/v2ray/config.json 

i键编辑文件,把内容更改为下面的内容:

{
  "log": {
    "access": "/var/log/v2ray/access.log",
    "error": "/var/log/v2ray/error.log",
    "loglevel": "warning"
  },
  "inbounds": [
    {
      "port": 33684,
      "listen": "127.0.0.1",
      "protocol": "vmess",
      "settings": {
        "clients": [
          {
            "id": "0c67ca68-63ad-40c5-898e-9cf1925c8694",
            "level": 1,
            "alterId": 64
          }
        ]
      },
      "streamSettings": {
        "network": "ws",
        "wsSettings": {
          "path": "/etc/nginx/html"
        }
      }
    }
  ],
  "outbounds": [
    {
      "protocol": "freedom",
      "settings": {},
      "tag": "direct"
    },
    {
      "protocol": "blackhole",
      "settings": {},
      "tag": "blocked"
    }
  ],
  "routing": {
    "rules": [
      {
        "type": "field",
        "ip": [
          "0.0.0.0/8",
          "10.0.0.0/8",
          "100.64.0.0/10",
          "127.0.0.0/8",
          "169.254.0.0/16",
          "172.16.0.0/12",
          "192.0.0.0/24",
          "192.0.2.0/24",
          "192.168.0.0/16",
          "198.18.0.0/15",
          "198.51.100.0/24",
          "203.0.113.0/24",
          "::1/128",
          "fc00::/7",
          "fe80::/10"
        ],
        "outboundTag": "blocked"
      }
    ]
  }
}

3.配置Nginx

执行下面的命令,开始配置nginx:

[[email protected] ~]# vi /etc/nginx/conf.d/v2ray.conf 

i键编辑文件,把内容更改为下面的内容:

server{
    listen 80;
    server_name hi.aitlp.com;
    return 301 https://$server_name$request_uri;
}

server {
    listen 443 ssl http2 default_server;
    server_name hi.v2ray.com;

    ssl_certificate /etc/letsencrypt/live/hi.v2ray.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/hi.v2ray.com/privkey.pem;

    root /etc/nginx/html;
    index index.html;

    location /etc/nginx/html {
        proxy_redirect off;
        proxy_pass http://127.0.0.1:27321;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header Host $http_host;
    }
}

4.重启v2ray、nginx服务

systemctl restart v2ray

systemctl restart nginx

客户端配置json

如果你通过Json文件配置,则客户端的json配置内容:

{
  "log": {
    "loglevel": "warning"
  },
  "inbound": {
    "port": 1080,
    "listen": "127.0.0.1",
    "protocol": "socks",
    "settings": {
      "auth": "noauth",
      "udp": false
    }
  },
  "inboundDetour": [
    {
        "port": 8128,
        "listen": "127.0.0.1",
        "protocol": "http",
        "settings": {}
    }
  ],
  "outbound": {
    "protocol": "vmess",
    "settings": {
      "vnext": [{
        "address": "hi.v2ray.com",
        "port": 443,
        "users": [{ 
            "id": "0c67ca68-63ad-40c5-898e-9cf1925c8694",
            "level": 1,
            "alterId": 64,
            "security": "aes-128-gcm"
        }]
      }]
    },
    "streamSettings":{
        "network": "ws",
        "security": "tls",
        "tlsSettings": {
            "serverName": "hi.v2ray.com"
        },
        "wsSettings": {
            "path": "/etc/nginx/html"
        }
    },
    "tag": "forgin"
  },
  "outboundDetour": [
    {
        "protocol": "freedom",
        "settings": {},
        "tag": "direct"
    }
  ],
  "routing": {
    "strategy": "rules",
    "settings": {
        "domainStrategy": "IPIfNonMatch",
        "rules": [
            {
                "type": "chinaip",
                "outboundTag": "direct"
            },
            {
                "type": "chinasites",
                "outboundTag": "direct"
            },
            {
                "type": "field",
                "ip": [
                    "0.0.0.0/8",
                    "10.0.0.0/8",
                    "100.64.0.0/10",
                    "127.0.0.0/8",
                    "169.254.0.0/16",
                    "172.16.0.0/12",
                    "192.0.0.0/24",
                    "192.0.2.0/24",
                    "192.168.0.0/16",
                    "198.18.0.0/15",
                    "198.51.100.0/24",
                    "203.0.113.0/24",
                    "::1/128",
                    "fc00::/7",
                    "fe80::/10"
                ],
                "outboundTag": "direct"
            }
        ]
    }
  },
  "policy": {
    "levels": {
      "0": {"uplinkOnly": 0}
    }
  }
}

5.客户端界面配置

这里我是用v2rayN,配置如下:

v2rayn-config.jpg

6.常见问题

1)使用v2ray访问谷歌提示异常流量
2)启用cloudflare cdn之后v2ray报403错误

参考文章:

  1. v2ray + websocket + web + nginx 配置与使用
转载请注明来源:四个空格 » centos7基于nginx搭建v2ray服务端配置vmess+tls+websocket完全手册

评论 17

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
  1. #1

    你好,请问v2ray可以配置多用户吗?我想同时给我几个好友用

    VK3601H8个月前 (03-14)Reply
    • 可以配置多用户,修改clients数组,增加一个即可。

      michael8个月前 (03-19)Reply
      • 请问clients数组中的id,level应该怎么填写呢,id是如何生成的呢

        Bay5个月前 (07-06)Reply
        • id安装的时候自动会生成,也可以到此网页https://www.uuidgenerator.net/重新生成替换一下

          michael5个月前 (07-07)Reply
          • 我的意思是如何增加一个用户给我的朋友使用,也是一样的方法吗,直接加一个client,id就使用从您给的网址生成的新id就可以了吗?

            Bay5个月前 (07-07)
  2. #2

    你好,可以用这个方法让MTProxy隐蔽一点吗?

    Lee7个月前 (05-10)Reply
  3. #3

    怎么查询开头两图的上网记录

    perfect5个月前 (06-12)Reply
    • 联通10010官网就可以查询,登录之后

      michael5个月前 (06-12)Reply
  4. #4

    我想咨询下,被墙的vps已经重装了debian然后安装了 boy的 一键 v2ray脚本,CDN也开通了域名转发ping的通了,但是就是客户端连不起…..我想麻烦你看下是哪里没对

    Peter Su5个月前 (06-13)Reply
    • 要是用的cloudflare的cdn,就不能使用域名伪装,不然连不上,详见:https://www.4spaces.org/v2ray-cloudflare-cdn-403/

      michael5个月前 (06-13)Reply
  5. #5

    您好,我安装好后手机可以用,pc客户端连接后访问网站都是accepted但是所有网站都提示连接终止是什么意思?

    Liu5个月前 (06-15)Reply
  6. #6

    可以同时使用mkcp和websocket吗?

    Grocker2个月前 (09-22)Reply
  7. #7

    kcp+tls被强几率高吗?被墙怕了

    Grocker2个月前 (09-22)Reply
  8. #8

    兄弟,你连nginx的转发端口和v2ray的监听端口都不是配的一样的,然后SELinux关闭的步骤也没说。教程要么就别写,要么就认真点好吗。这是从哪里复制过来的?

    tony2天前Reply
    • 可能咱们用的vps不一样吧,我是用的digitalocean的VPS,每次都是从这篇文章直接复制就能搭建成功,从来没有需要我SELinux关闭的情况,我的环境上面有说明,我觉得还是有参考价值的,文章都是我一个字一个字码的,出了问题就找解决办法,能搭建成功靠的不是别人,是自己。

      michael1天前Reply