Nginx变身爆火神器,手把手教你在永洪BI中应用
Nginx是一款輕量級(jí)的Web服務(wù)器/反向代理服務(wù)器及電子郵件(IMAP/POP3)代理服務(wù)器,在BSD-like協(xié)議下發(fā)行。其特點(diǎn)是占有內(nèi)存少,并發(fā)能力強(qiáng),事實(shí)上nginx的并發(fā)能力在同類型的網(wǎng)頁服務(wù)器中表現(xiàn)較好。
Nginx不屬于永洪標(biāo)準(zhǔn)產(chǎn)品的組成部分,其作為高并發(fā)場景下反向代理和負(fù)載均衡的一種通用的解決方案,在許多的項(xiàng)目中得到了實(shí)踐,驗(yàn)證了其可用性。本文就其在永洪產(chǎn)品中的具體應(yīng)用做一個(gè)說明。
Nginx變身爆火神器,手把手教你在永洪BI中應(yīng)用
Nginx安裝
本文演示的是 Linux centOS7.x 的操作系統(tǒng)上安裝 Nginx ,至于在其它操作系統(tǒng)上進(jìn)行安裝,可以網(wǎng)上自行搜索或者參考Nginx的官方文檔,都非常簡單。
使用yum 安裝 Nginx:yum installnginx -y
安裝完成后,通過 rpm-ql nginx 命令查看 Nginx 的安裝信息:
#Nginx配置文件
/etc/nginx/nginx.conf# nginx 主配置文件
/etc/nginx/nginx.conf.default
#可執(zhí)行程序文件
/usr/bin/nginx-upgrade
/usr/sbin/nginx
#nginx庫文件
/usr/lib/systemd/system/nginx.service# 用于配置系統(tǒng)守護(hù)進(jìn)程
/usr/lib64/nginx/modules# Nginx模塊目錄
#存放Nginx日志文件
/var/log/nginx
/etc/nginx/conf.d/是子配置項(xiàng)存放處,/etc/nginx/nginx.conf 主配置文件會(huì)默認(rèn)把這個(gè)文件夾中所有子配置項(xiàng)都引入;
/usr/share/nginx/html/靜態(tài)文件都放在這個(gè)文件夾,也可以根據(jù)你自己的習(xí)慣放在其他地方;
Nginx啟動(dòng)等相關(guān)命令:
開機(jī)配置
systemctl enable nginx # 開機(jī)自動(dòng)啟動(dòng)
systemctl disable nginx # 關(guān)閉開機(jī)自動(dòng)啟動(dòng)
啟動(dòng)Nginx
systemctl start nginx
停止Nginx
systemctl stop nginx
重啟Nginx
systemctl restart nginx
重新加載Nginx
systemctl reload nginx
查看 Nginx 運(yùn)行狀態(tài)
systemctl status nginx
查看Nginx進(jìn)程
ps -ef | grep nginx
殺死Nginx進(jìn)程
kill -9 pid
Nginx在永洪產(chǎn)品的實(shí)際應(yīng)用
多C節(jié)點(diǎn)通過nginx做負(fù)載均衡
通常情況下,在多C的環(huán)境中,客戶只希望以一個(gè)統(tǒng)一的界面為業(yè)務(wù)人員提供服務(wù),這個(gè)時(shí)候反向代理多個(gè)C的工作,就可以交由Nginx來實(shí)現(xiàn),但是這里存在一個(gè)問題:
如果被代理到不同C上的報(bào)告或者數(shù)據(jù)集的資源不同,就會(huì)給用戶帶來混淆和困擾,所以一般建議做反向代理的多個(gè)C,都使用數(shù)據(jù)庫系統(tǒng)的方式配置統(tǒng)一的元數(shù)據(jù)庫,這樣可以保證每個(gè)用戶的請(qǐng)求被代理到不同的C上所看到的內(nèi)容是統(tǒng)一的。
多C節(jié)點(diǎn)實(shí)現(xiàn)負(fù)載均衡配置如下(僅暫時(shí)部分配置供參考):
上圖中,展示了三個(gè)C節(jié)點(diǎn)作為訪問節(jié)點(diǎn),配置好訪問權(quán)重之后,nginx會(huì)均勻的向每一臺(tái)服務(wù)器發(fā)送對(duì)應(yīng)的請(qǐng)求,實(shí)現(xiàn)負(fù)載均衡。以下是對(duì)上圖的主要內(nèi)容解釋:
upstream bi.com
服務(wù)器地址池,bi.com可以自行修改,不會(huì)在外部使用
weight
分配到每個(gè)服務(wù)器的訪問權(quán)重
ip_hash
nginx會(huì)讓相同的客戶端ip請(qǐng)求相同的服務(wù)器。
proxy_pass http://bi.com
監(jiān)聽nginx服務(wù)器并轉(zhuǎn)到upstream池中的服務(wù)器地址
通過以上配置內(nèi)容可以實(shí)現(xiàn)C節(jié)點(diǎn)服務(wù)器的負(fù)載均衡,減輕單個(gè)C節(jié)點(diǎn)接受所有請(qǐng)求的訪問壓力,但美中不足的是,這樣做了之后手機(jī)端訪問之后會(huì)出現(xiàn)問題,那么如何解決手機(jī)端訪問的問題呢?我們一一道來。
Nginx做了負(fù)載之后希望移動(dòng)端也可以訪問
目前,我們的移動(dòng)端主要是通過websocket實(shí)現(xiàn)與服務(wù)器的雙向通信連接,所以在負(fù)載均衡配置中,我們需要添加websocket的相關(guān)連接配置,以保證我們的移動(dòng)端也能正常訪問,詳細(xì)配置參考下圖:
Nginx變身爆火神器,手把手教你在永洪BI中應(yīng)用
值得注意的是,這里我們注釋了ip_hash,是因?yàn)閕p_hash可能會(huì)導(dǎo)致我們的bi無法獲取到真實(shí)的請(qǐng)求信息。接下來我們對(duì)相關(guān)名詞進(jìn)行解釋:
map指令可以將變量組合成為新的變量,會(huì)根據(jù)客戶端傳來的連接中是否帶有Upgrade頭來決定是否給源站傳遞Connection頭,這樣做的方法比直接全部傳遞upgrade更加優(yōu)雅。
獲取真實(shí)IP:在多重代理的情況下nginx會(huì)獲取真實(shí)服務(wù)器的IP。
Websocket所需要配置的:服務(wù)器處理完請(qǐng)求后,告訴客戶端已成功切換協(xié)議,升級(jí)為Websocket協(xié)議。握手成功之后,服務(wù)器端和客戶端便角色對(duì)等,就像普通的Socket一樣,能夠雙向通信。不再進(jìn)行HTTP的交互,而是開始WebSocket的數(shù)據(jù)幀協(xié)議實(shí)現(xiàn)數(shù)據(jù)交換。
HTTPS與跨域
有些朋友可能還想知道,我的域名是通過nginx解析的,并且我的證書也解析在該域名上,現(xiàn)在想通過代理的方式去解決BI系統(tǒng)https訪問的問題,該如何配置。參考下圖配置:
Nginx變身爆火神器,手把手教你在永洪BI中應(yīng)用
通過這樣,我們就實(shí)現(xiàn)了通過代理的方式使用https訪問BI,下面我們對(duì)這個(gè)配置中的部分內(nèi)容解釋一下:
ssl_certificate
證書路徑
ssl_certificate_key
證書密鑰路徑
ssl_session_cache
設(shè)置存儲(chǔ)session參數(shù)的緩存的類型和大小
ssl_session_timeout
Session過期時(shí)間
ssl_ciphers
指定用于保護(hù)服務(wù)器通信的算法
ssl_prefer_server_ciphers
設(shè)置協(xié)商加密算法時(shí),優(yōu)先使用我們服務(wù)端的加密套件,而不是客戶端瀏覽器的加密套件
ssl_protocols
用于啟動(dòng)特定的加密協(xié)議
proxy_cookie_path
設(shè)置session的保存位置,如果是通過https轉(zhuǎn)發(fā)訪問到http的服務(wù)上,配置這個(gè)解決跨域問題
還有一點(diǎn),某些朋友可能想到,我配置了https之后,原本的http端口我想讓他自動(dòng)強(qiáng)制跳轉(zhuǎn)到https上來,都通過https訪問該怎么做呢?
其實(shí)也是有辦法的,這里推薦兩種方式:
方式1:
通過301跳轉(zhuǎn):return301
https://servernameserver_nameservern?amerequest_uri;
方式2:
自動(dòng)匹配再跳轉(zhuǎn):
rewrite^(*)$ https://servernameserver_nameservern?amerequest_uri permanent;
結(jié)語
近期我們收到大量小伙伴關(guān)于“如何在永洪產(chǎn)品基礎(chǔ)上使用Nginx”的咨詢,所以本文主要針對(duì)于Nginx這類代理服務(wù)器,在永洪產(chǎn)品中的具體使用,有不足之處歡迎指正。
還在為文中涉及到的到問題發(fā)愁的小伙伴們,也可以趕緊動(dòng)手試一試。
總結(jié)
以上是生活随笔為你收集整理的Nginx变身爆火神器,手把手教你在永洪BI中应用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 这款国产BI我推荐了:Tableau+S
- 下一篇: 轻量级HTTP服务器Nginx(Ngin