Nginx反代 - 多站点、X光共存
这里是不使用一键脚本,全手动配置的方法之一。缺点是繁琐,有很多前提条件。优点是比脚本更灵活一些,可以按想要的那样配置。
接上面SSL与泛域名解析。
在已经有域名、域名证书、配置好Nginx反代和Cloudflare DNS+CDN的情况下,如果你的VPS下面硬件所在的机房地理位置不错……可以考虑再挂个X光。
Nginx 这边可以这样写
server {
listen 80;
listen [::]:80;
server_name <secondary_domain>.<your_domain>.com;
# 安全起见,不使用自己打算长期使用的域名
# 使用Cloudflare的免费证书的请不要设置三级域名,不支持的
# 虽然想排列组合出更多域名的心情我懂
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl;
listen [::]:443 ssl;
server_name <secondary_domain>.<your_domain>.com;
include snippets/<your_SSL_snippets>.conf;
add_header 'Access-Control-Allow-Origin' '*';
client_max_body_size 20m;
location /<some_random_path_please>/ { # 请来它一大长串随机码!
# 写/phpmyadmin/什么的也见过,按这个思路,/api/什么的估计也行
# 主要是为了让它看起来很低调
proxy_redirect off;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
set $is_matched 0;
if ($http_upgrade != "websocket") {# 是的,需要一个回落用的网站
# 也见过有人写回落去Digital Ocean知识库的……可能有点不太厚道?
# 但总之,反代到其他域名下要注意Host和Origin别再复制$host了
proxy_pass http://localhost:<port_of_your_fallback_site>;
set $is_matched 1;
}
if ($is_matched = 0 ){
proxy_pass http://localhost:<port_of_your_xray>;
}
}
location / {
proxy_pass http://127.0.0.1:<port_of_your_fallback_site>;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $http_connection;
proxy_set_header Origin http://$host;
}
}
X光安装
# bash -c "$(curl -L https://github.com/XTLS/Xray-install/raw/main/install-release.sh)" @ install
配置
{
"inbounds": [
{
"port": 端口号_自行设置,
"listen": "127.0.0.1",
"tag": "VLESS-in",
"protocol": "VLESS",
"settings": {
"clients": [
{
"id": "弄一串uuid之类的,但其实使用上类似于你的密码",
"alterId": 64
}
],
"decryption": "none"
},
"streamSettings": {
"network": "ws",
"wsSettings": {
"path": "/之前在Nginx配置里写得那串随机或不随机的/"
}
}
}
],
"outbounds": [
{
"protocol": "freedom",
"settings": {},
"tag": "direct"
},
{
"protocol": "blackhole",
"settings": {},
"tag": "blocked"
}
],
"dns": {
"servers": [
"https+local://1.1.1.1/dns-query",
"1.1.1.1",
"1.0.0.1",
"8.8.8.8",
"8.8.4.4",
"localhost"
]
},
"routing": {
"domainStrategy": "AsIs",
"rules": [
{
"type": "field",
"inboundTag": [
"VLESS-in"
],
"outboundTag": "direct"
}
]
}
}
然后重启服务。
如果使用的是新的二级域名,记得在DNS里配置,开上CDN理论上能更稳定一些(生命力顽强挂的角度……)。
服务端就完事了,客户端搜索一下从Git下载、配置吧。
另外不要看到某些客户端(如酸酸乳)的连通性测试结果显示失败(fail)就信了,其实可能使能用的,只有真的上网试一试才能确定。
以及,悄悄:红米AC2100棒棒哒,完全带得起来~