Setup Proxy Server
Table of Contents
WebSocket+TLS+Web
v2ray server client setup
{"log": {"access": "/var/log/v2ray/access.log","error": "/var/log/v2ray/error.log","loglevel": "warning"},"routing": {"domainStrategy": "AsIs","rules": [{"type": "field","ip": ["geoip:private"],"outboundTag": "block"}]},"inbounds": [{"port": 789,"protocol": "vmess","settings": {"clients": [{"id": "4e1c5285-2e60-4302-9f30-5d1aedf6d9eb","level": 1,"alterId": 0}]},"streamSettings": {"network": "tcp"},"sniffing": {"enabled": true,"destOverride": ["http","tls"]}},{"listen": "127.0.0.1","port": 10000,"protocol": "vmess","settings": {"clients": [{"id": "bf1d82a2-640a-484e-83ea-3b30bc7a46da","alterId": 0}]},"streamSettings": {"network": "ws","wsSettings": {"path": "/ray"}}}],"outbounds": [{"protocol": "freedom","tag": "direct"},{"protocol": "blackhole","tag": "block"}]}
v2ray client config
{"inbounds": [{"port": 1080,"listen": "127.0.0.1","protocol": "socks","sniffing": {"enabled": true,"destOverride": ["http","tls"]},"settings": {"auth": "noauth","udp": false}}],"outbounds": [{"protocol": "vmess","settings": {"vnext": [{"address": "proxy.example.com","port": 443,"users": [{"id": "bf1d82a2-640a-484e-83ea-3b30bc7a46da","alterId": 0}]}]},"streamSettings": {"network": "ws","security": "tls","wsSettings": {"path": "/ray"}}}]}
Clash config
proxies:- name: "vmess"type: vmessserver: proxy.example.comport: 443uuid: bf1d82a2-640a-484e-83ea-3b30bc7a46daalterId: 0cipher: autotls: trueskip-cert-verify: truenetwork: wsws-opts:path: /rayHost: example.commux: false
Nginx
server {server_name proxy.example.com;listen 443 ssl;ssl on;ssl_certificate your_fullchains_cert.crt;ssl_certificate_key your_fullchains_cert.key;ssl_protocols TLSv1 TLSv1.1 TLSv1.2;ssl_ciphers HIGH:!aNULL:!MD5;location /ray {if ($http_upgrade != "websocket") {return 404;}proxy_redirect off;proxy_pass http://127.0.0.1:10000/ray;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.logproxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;}}server {listen 80;server_name proxy.example.com;rewrite ^(.*)$ https://example.com:443/$1 permanent;}
测试
访问网站根目录
curl -s https://proxy.example.com
先通过普通的curl命令来连接
curl -s https://proxy.example.com/ray
带参数访问
curl -s --include --header "Upgrade: websocket" https://proxy.example.com/ray
Trouble Shoot
AH01144: No protocol handler was valid for the URL /ray (scheme 'ws').
尝试使用apache2来配置时,出现下面的问题,对apache2的配置不熟悉,暂未解决, 改用了nginx。
[Mon Mar 20 18:52:16.056911 2023] [proxy:warn] [pid 38602:tid 139868881540864] [client 18.117.95.84:34288] AH01144: No protocol handler was valid for the URL /ray (scheme 'ws'). If you are using a DSO version of mod_proxy, make sure the proxy submodules are included in the configuration using LoadModule.