1. 程式人生 > 實用技巧 >基於nginx負載均衡及frp的內網穿透例項3-多使用者多網站共用80埠

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