v2ray 部署

使用 docker compose 部署 v2ray,指定好端口映射以及配置目录。

version: "3.5"

services:
  v2ray:
    image: v2ray/official:latest
    container_name: v2ray
    restart: always
    tty: true
    ports:
      - "9000:9000"
    volumes:
      - <your 2ray path>:/etc/v2ray

v2ray 的配置目录下创建 config.json 文件,使用 guidgen 生成一个 id

{
  "inbounds": [
    {
      "port": 9000,
      "protocol": "vmess",
      "settings": {
        "clients": [
          {
            "id": "<your id>",
            "level": 0,
            "alterId": 100
          }
        ]
      },
      "streamSettings": {
        "network": "ws",
        "wsSettings": {
                "path": "/v2ray"
        }
      }
    }
  ],
  "outbounds": [
    {
      "protocol": "freedom",
      "settings": {}
    }
  ],
  "log": {
    "loglevel": "debug"
  }
}

然后启动 docker compose,运行 v2ray 服务器。

Nginx 部署

之后在另一台服务器上,部署 Nginx

Nginx 比较简单,他的配置如下。主要是设置域名以及要转发的 IP 地址,然后就是支持 WebSocket

server {
    listen  80;
    server_name <your domain>;

    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl; 
    server_name <your domain>;
  
    ssl_certificate /etc/nginx/certs/<your pem file>;
    ssl_certificate_key /etc/nginx/certs/<your key file>;
    ssl_session_timeout 1d;
    ssl_session_tickets off;
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers 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_prefer_server_ciphers off;
    add_header Strict-Transport-Security "max-age=63072000" always;
    ssl_stapling on;
    ssl_stapling_verify on;
  
    charset               utf-8;
    sendfile                on;
    tcp_nopush              on;
    tcp_nodelay             on;
    keepalive_requests      25600;
    keepalive_timeout       65;
    proxy_buffering         off;
    proxy_buffer_size       8k;

    location /v2ray {
        proxy_pass http://<your v2ray service ip>:9000;
        proxy_redirect off;
        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 3600s;
        proxy_send_timeout 3600s;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }

}

Clash 配置

然后直接使用 Clash 创建配置,并启动即可。

proxies:
  - name: "V2Ray-WS"
    type: vmess
    server: <your domain>
    port: 443
    uuid: <your v2ray config id>
    alterId: 100
    cipher: auto
    tls: true
    network: ws
    ws-opts:
      path: /v2ray
    udp: true

proxy-groups:
  - name: "Auto"
    type: select
    proxies:
      - "V2Ray-WS"
      - "DIRECT"

rules:
  - DOMAIN-SUFFIX,example.com,DIRECT
  - GEOIP,CN,DIRECT
  - MATCH,Auto

一个小问题

部署的时候,Nginx 服务器转发到 v2ray 服务器时,建议直接使用 IP:PORT,如果 Nginxv2ray 服务器部署在一起,直接在 docker 内部的网桥之间通信,可能会出现一些问题。