原文地址:点击跳转
最近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
端口访问,于是在nginx
的server
模块加一个反向代理的设置。
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