关于nginx流量转发的进阶问题

[复制链接]
查看: 2457   回复: 9
发表于 2023-12-13 02:19:47 | 显示全部楼层 |阅读模式
VPS-A 是GIA+9929,建了网站和vless&trojan
VPS-B 是落地鸡,解锁奈飞用的,只建了vless&trojan

我把域名3个域名 blog.domain.com / a.domain.com / b.domain.com 都指向了VPS-A
希望的效果是这样的,都是443端口
使用blog.domain.com,就是正常博客
使用a.domain.com,就是正常上网代理
使用b.domain.com,VPS-A把流量转发到VPS-B 进行上网代理,可以看奈飞


都要崩溃了,试了好多方案都不行啊,代码中的IP 已经做了处理....
QQ 一溜一溜9352
先出100吧,哈哈

方案一
网站的端口我改成了444,ngixn的主配置文件加了这个
默认web服务是可以的,但是trojan不行啊,显示网站不安全
  1. stream {  map $ssl_preread_server_name $backend_name {    9929-442.getpocket.in trojan;        9929-ifog.getpocket.in ifog;    default web;  }    upstream web {    server 127.0.0.1:444;  }    upstream trojan {    server 127.0.0.1:442;  }    upstream ifog {    server 185.44.83.50:443;  }    server {    listen 443 reuseport;    proxy_pass $backend_name;    ssl_preread on;  }}
复制代码

方案二
抄了trojan官网的配置,放在nginx主配置中,貌似也不行啊
  1. stream {  map $ssl_preread_server_name $name {    9929-ifog.getpocket.in   ifog.getpocket.in;    9929-pr.getpocket.in   pr.getpocket.in;    9929-442.getpocket.in   localhost:442;    default           localhost:444;  }  server {    listen      443; # 监听 443 端口    proxy_pass  $name;    ssl_preread on;  }}
复制代码

方案三
抄了这里https://blog.xmgspace.me/archives/nginx-sni-dispatcher.html
ngixn的主配置文件加了这个
  1. stream {map $ssl_preread_server_name $stream_map {9929-442.getpocket.in before_trojan;9929-pr.getpocket.in pr;9929-ifog.getpocket.in ifog;default web;} # #############################################upstream web {server 127.0.0.1:443;}upstream before_trojan {server 127.0.0.1:7442;}upstream trojan {server 127.0.0.1:442;}upstream pr {server 204.152.210.23:443;}upstream ifog {server 185.44.83.51:443;}# #############################################server {listen 23.224.46.62:443 reuseport;proxy_pass $stream_map;ssl_preread on;proxy_protocol on;}server {listen 127.0.0.1:7442 proxy_protocol;proxy_pass trojan;}}
复制代码

但是# Web服务器的配置的配置不知道放哪里啊,放哪到报错啊...
  1. server {listen 80;# 我们只对443端口进行SNI分流,80端口依旧做Web服务;SNI分流也只能在443端口上跑TLS流量才能分流listen 127.0.0.1:443 ssl http2 proxy_protocol;# 监听本地443端口,要和上面的stream模块配置中的upstream配置对的上,开启Proxy protocolif ($ssl_protocol = "") {return 301 https://$host$request_uri;}index index.html index.htm index.php;try_files $uri $uri/ /index.php?$args; set_real_ip_from 127.0.0.1;# 从Proxy protocol获取真实IPreal_ip_header proxy_protocol;}
复制代码

最后一个方案直接报错了..
  1. stream{    upstream web {               server 127.0.0.1:444;     }    upstream trojan {               server 127.0.0.1:442;     }    upstream pr {               server 204.152.210.23:443;     }    server{        listen 443;        listen 443 udp;                server_name  9929.getpocket.in;        proxy_pass web;                    }    server{        listen 443;        listen 443 udp;                server_name  9929-442.getpocket.in;        proxy_pass trojan;                    }    server{        listen 443;        listen 443 udp;                server_name  9929-pr.getpocket.in;        proxy_pass pr;    }}
复制代码
回复

使用道具 举报

发表于 2023-12-13 02:20:02 | 显示全部楼层
你搞清楚,第一篇文章并没有复用端口。你的需求是复用端口,根据SNI分流,得用这个模块
ngx_stream_ssl_preread_module

如果你梯子用ws或者h2的话,我更建议根据路径分流,这样就不需要考虑源IP的问题了
回复 支持 反对

使用道具 举报

发表于 2023-12-13 02:20:27 | 显示全部楼层
为什么非要用nginx呢

我都是用宝塔每个站单独配置文件方便
回复 支持 反对

使用道具 举报

发表于 2023-12-13 02:20:51 | 显示全部楼层
没明白 你是哪里失败了 还是全部都失败了
回复 支持 反对

使用道具 举报

发表于 2023-12-13 02:21:00 | 显示全部楼层
micms 发表于 2022-2-13 00:04
没明白 你是哪里失败了 还是全部都失败了
就是第二和第三不行…
如果方法可以的话我在试试…试了两次了,所以先确认方法是不是有问题
回复 支持 反对

使用道具 举报

发表于 2023-12-13 02:21:29 | 显示全部楼层
帮顶
回复 支持 反对

使用道具 举报

发表于 2023-12-13 02:22:20 | 显示全部楼层
A 服务器 安装宝塔面板,然后设置反代

a.domain.com => 本机 vless
b.domain.com => 落地机 vless
回复 支持 反对

使用道具 举报

发表于 2023-12-13 02:23:06 | 显示全部楼层
a机vless做前置代理监听443,属于vless的流量正常代理,不属于vless的流量回落至博客。b机奈飞解锁机使用dnsmasq+sniproxy,a机vless进行dns分流,属于奈飞的流量给b机,不属于的正常代理
回复 支持 反对

使用道具 举报

发表于 2023-12-13 02:23:25 | 显示全部楼层
那A机是不是直接这样就可以了?
https://hostloc.com/thread-866922-1-1.html

我的想法是都通过流量转发来解决,可以吗?
回复 支持 反对

使用道具 举报

发表于 2023-12-13 02:23:43 | 显示全部楼层
这不就是最基本的按域名转发到不同的后端吗?upstream
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则