louiseblairr2 发表于 2023-12-13 02:19:47

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

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不行啊,显示网站不安全
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主配置中,貌似也不行啊
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的主配置文件加了这个
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服务器的配置的配置不知道放哪里啊,放哪到报错啊...
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;}

最后一个方案直接报错了..
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_name9929.getpocket.in;      proxy_pass web;                  }    server{      listen 443;      listen 443 udp;                server_name9929-442.getpocket.in;      proxy_pass trojan;                  }    server{      listen 443;      listen 443 udp;                server_name9929-pr.getpocket.in;      proxy_pass pr;    }}

灌水王 发表于 2023-12-13 02:20:02

你搞清楚,第一篇文章并没有复用端口。你的需求是复用端口,根据SNI分流,得用这个模块
ngx_stream_ssl_preread_module

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

lycreatyhe 发表于 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

我的想法是都通过流量转发来解决,可以吗?

u农场使者4 发表于 2023-12-13 02:23:43

这不就是最基本的按域名转发到不同的后端吗?upstream
页: [1]
查看完整版本: 关于nginx流量转发的进阶问题