基于nginx负载均衡及frp的内网穿透实例3-多用户多网站共用80端口

原文地址:点击跳转

最近frp用户量有点多,而且很多用户都是想把部署于本地或者内网的web服务暴露至公网,之前提到过,暴露到公网之后如果一般都需要用域名:端口的方法来访问,但是没有人会喜欢用这种方式访问网站的。

于是问题就来了

只有一台机器,用户都想把自己的web服务映射到80端口,可我的80端口就只有一个,如果第一个用户使用了80,第二个用户再使用80肯定会提示端口冲突,所以只通过frp本身的功能是不够的。

 

如何实现多用户共用80端口

 

一开始陷入了一个圈里,我在想“假设多个用户能共用80端口,也就是80端口对应几个不同的内网web服务,那其他人通过80端口访问web服务时,服务器怎么会知道到底把请求转发给哪一个WEB服务呢”

诶嘿!结果绕着绕着思路还真就找到了。

我直接告诉服务器哪个域名对应哪个内网web服务不就行了!

于是想到nginx的负载均衡(可能不太准确,或者说是反向代理)功能正好能实现。

框架大概是这样:假设不同用户的内网80端口分别转发至服务器的8001、8002、8003·····他们各自的域名分别为a.com 、 b.com 、c.com然后我告诉nginx,有人请求访问a.com了,你就去找8001端口;有人访问b.com了,你就去找8002······以此类推。

(太困了,明天继续写)

下面举个例子,我自己老母鸡上有一个站点是demo.wuter.cn,根据我的frp的vhost_http_port设置,这个站点的80端口是映射到公网的8081端口的,但我又想直接通过公网的80端口访问,于是在nginxserver模块加一个反向代理的设置。

server

{

listen 80;

server_name demo.wuter.cn;

index index.php index.html index.htm default.php default.htm default.html;

root /www/wwwroot/demo.wuter.cn;

location /

{

proxy_pass http://127.0.0.1:8081;

proxy_set_header Host $host;

proxy_set_header X-Real-IP $remote_addr;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

proxy_set_header REMOTE-HOST $remote_addr;

 

add_header X-Cache $upstream_cache_status;

#Set Nginx Cache

 

proxy_set_header Accept-Encoding “”;

sub_filter “127.0.0.1” “wuter.cn”;

sub_filter_once off;

 

proxy_ignore_headers Set-Cookie Cache-Control expires;

proxy_cache cache_one;

proxy_cache_key $host$uri$is_args$args;

proxy_cache_valid 200 304 301 302 120m;

expires 12h;

}

}

此时直接访问http://demo.wuter.cn就可以直接访问到我的老母鸡上。(文章发出时已关闭母鸡)

原文链接:https://www.cnblogs.com/wuter/p/14186193.html

© 版权声明
THE END
喜欢就支持一下吧
点赞7 分享