點擊上方「Java基基」,選擇「設為星標」
做積極的人,而不是積極廢人!
來源:http://t.cn/AiKual8Y
學到老活到老
什麼是反向代理與負載均衡
Nginx反向代理與負載均衡的實現
nginx配置
proxy_pass
Upstream模塊實現負載均衡
工作中的簡單使用
學到老活到老前端圈一直很新,一直要不停的學習,而且在進入大廠的路上,還要求熟悉一門後臺語言等等。用一句別人開玩笑的話來說,java十年前的技術現在還能用,而前端的技術就不是這樣的了
突然想起了deno項目發布的時候,一個搞笑的issue,「求別更新了,老子學不動了」。雖然看起來是一個玩笑的issue,但卻道出了前端們不得不表現出來的疲態,知識點越來越龐大,學習的內容越來越多
也聽到一些朋友們說,換成現在再面試阿里,恐怕不好進了啊。當然很多都是隨便一說的玩笑話,聽過一笑便可,不必當真,也不必抱怨了
好了,今天就直接來說一下主題吧,前端要了解一些運維的Nginx用法,內容不多,簡單看看就好,這兩個功能在工作當中就夠用了,那麼首先來看個問題,什麼是反向代理與負載均衡
什麼是反向代理與負載均衡什麼是反向代理當我們有一個伺服器集群,並且伺服器集群中的每臺伺服器的內容一樣的時候,同樣我們要直接從個人電腦訪問到伺服器集群伺服器的時候無法訪問,必須通過第三方伺服器才能訪問集群
這個時候,我們通過第三方伺服器訪問伺服器集群的內容,但是我們並不知道是哪一臺伺服器提供的內容,此種代理方式稱為反向代理
什麼是負載均衡公司會建立很多的伺服器,這些伺服器組成了伺服器集群,然後,當用戶訪問網站的時候,先訪問一個中間伺服器,再讓這個中間伺服器在伺服器集群中選擇一個壓力較小的伺服器,然後將該訪問請求引入選擇的伺服器
所以,用戶每次訪問,都會保證伺服器集群中的每個伺服器壓力趨於平衡,分擔了伺服器壓力,避免了伺服器崩潰的情況
一句話:nginx會給你分配伺服器壓力小的去訪問
Nginx反向代理與負載均衡的實現用戶訪問網站的時候首先會訪問nginx伺服器,然後nginx伺服器再從伺服器集群中選擇壓力較小的伺服器,將該訪問請求引向該伺服器
nginx配置下面修改配置方面我就從mac系統下來進行簡單的演示,如何安裝的話也暫以mac為主了,windows系統直接去Nginx官網下載安裝即可
安裝nginx
1-進到homebrew官網,然後複製命令,預安裝需要的東西
2-brew install nginx 安裝nginx
3-nginx -v 顯示版本號
進入nginx
cd /usr/local/etc/nginx
下圖為進入nginx文件夾下的文件內容
img當進到這個目錄下,我們就可以操作nginx了,接下來就列舉一些非常非常有用的命令,多敲幾遍,一定要記住
nginx常用命令imgimg對於我們前端來說正常工作當中,倒是不需要過多的修改nginx的。我們之所以修改nginx配置,是為了做一些反向代理罷了
proxy_passnginx反向代理主要通過proxy_pass來配置,將你項目的開發機地址填寫到proxy_pass後面,正常的格式為proxy_pass URL即可
server {
listen 80;
location / {
proxy_pass http://10.10.10.10:20186;
}
}
ip_hash指令
server指令
upstream指令及相關變量
上面寫的三個指令,我們直接通過代碼來一一分析
worker_processes 1;
events {
worker_connections 1024;
}
http {
upstream firstdemo {
server 39.106.145.33;
server 47.93.6.93;
}
server {
listen 8080;
location / {
proxy_pass http:
}
}
}
上面修改的nginx.conf就是上圖中花圈的那個文件,nginx配置的主要修改就在這裡。化繁為簡,把原本nginx.conf裡的內容直接替換為上面的不到20行的代碼了
既然不到20行,那就把裡面對應的內容統統解釋一下吧,有個了解就好
上面修改了nginx.conf之後,別忘了最重要的一步重啟nginx
那麼再次訪問localhost:8080,會看到如下圖頁面
img還有另一個頁面
img每次刷新都會訪問不同的伺服器,這樣就做到了負載均衡處理
不過,更應該做到的是當用戶第一次訪問到其中一臺伺服器後,下次再訪問的時候就直接訪問該臺伺服器就好了,不用總變化了。那麼就發揮了ip_hash的威力了
upstream firstdemo {
ip_hash;
server 39.106.145.33;
server 47.93.6.93;
}
ip_hash它的作用是如果第一次訪問該伺服器後就記錄,之後再訪問都是該伺服器了,這樣比如第一次訪問是33伺服器,那之後再訪問也會分配為33伺服器訪問了
工作中的簡單使用在公司開發項目的時候,遇到設計,產品走查環節的時候,不能每次都讓他們去配一個host,畢竟這樣不友好,走查起來有麻煩。所以更應該給他們直觀的感受,既給一個訪問地址就可以看到樣子
下面給大家看一下,我正常在公司時nginx做的反向代理配置,和咱們上面的如出一轍,只是加了一個server_name,用指定的域名去訪問即可
server {
listen 80;
server_name chd.news.so.m.qss.test.so.com ;
auth_basic off;
location / {
proxy_pass http://10.10.10.10:20186;
proxy_set_header Host $host;
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_connect_timeout 60;
proxy_read_timeout 600;
proxy_send_timeout 600;
}
}
每次修改完nginx配置後不要忘記重啟nginx才能生效,這樣只需要訪問chd.news.so.m.qss.test.so.com這個地址就可以查看我的開發環境,進行走查了。
這就是nginx最大的功能,反向代理我也接觸的不是很多,畢竟不是專業運維出身,可比性差了很多。略知一二,也只是方便大家工作中使用吧,再次感謝大家的收看了,哈哈
歡迎加入我的知識星球,一起探討架構,交流源碼。加入方式,長按下方二維碼噢:
已在知識星球更新源碼解析如下:
如果你喜歡這篇文章,喜歡,轉發。
生活很美好,明天見(。・ω・。)ノ♡