基於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就可以直接訪問到我的老母雞上。(文章發出時已關閉母雞)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM