在linux中,nginx是一個高性能的HTTP和反向代理web服務器,是一款高性能的http服務器、反向代理服務器及電子郵件(IMAP/POP3)代理服務器。
本教程操作環境:linux5.9.8系統、Dell G3電腦。
nginx是什么
Apache?靜態資源服務器?
nginx 是一個 反向代理的 靜態資源服務器 。
nginx是一個使用c語言開發的高性能的http服務器及反向代理服務器。Nginx是一款高性能的http 服務器/反向代理服務器及電子郵件(IMAP/POP3)代理服務器。由俄羅斯的程序設計師Igor Sysoev所開發,官方測試nginx能夠支支撐5萬并發鏈接,并且cpu、內存等資源消耗卻非常低,運行非常穩定。
正向代理:
反向代理:
反向代理一般是用在服務器端 ,做請求的分發 ,能實現負載均衡。
Nginx的應用場景
1、 http服務器。Nginx是一個http服務可以獨立提供http服務。可以做網頁靜態服務器。
2、 虛擬主機。可以實現在一臺服務器虛擬出多個網站。例如個人網站使用的虛擬主機。
基于端口的,不同的端
基于域名的,不同域名
3、 反向代理,負載均衡。當網站的訪問量達到一定程度后,單臺服務器不能滿足用戶的請求時,需要用多臺服務器集群可以使用nginx做反向代理。并且多臺服務器可以平均分擔負載,不會因為某臺服務器負載高宕機而某臺服務器閑置的情況。
nginx 單擊版安裝 啟動 服務
1、安裝nginx 服務需要的插件
yum?install?-y?yum-utils
2、安裝nginx
在官方yum源中也是沒有nginx的,但是我們可以在本機去配置nginx的yam源,來實現nginx 的yum安裝。
然后再創建一個nginx.repo的文件:
[nginx] ?name=nginx?repo ?baseurl=http://nginx.org/packages/centos/7/$basearch/ ?gpgcheck=0 ?enabled=1
安裝好了:
nginx服務的管理命令:
systemctl start/stop/restart/status nginx
3、需要關閉linux 操作系統的selinux 服務
selinux是linux的安全服務套件
修改 vi /etc/selinux/config文件,修改如下內容:
修改過之后,必須重啟linux。
nginx 配置文件:
我們以后經常修改的配置文件是/etc/nginx/conf.d/default.conf:
使用nginx 做負載均衡
下載完壓縮包通過xftp傳到linux的opt文件夾下,進行解壓
第一步,首先要在我們linux服務器上啟動兩個tomcat
先配置jdk環境變量:
然后 保存退出 ,在命令行執行 source 命令 編譯環境變量文件,讓環境變量立刻生效:
tomcat 啟動:
第二步,準備兩個tomcat 一個端口號弄成8000 另外一個9000
第三步,修改nginx的配置文件
沒有安裝vim,使用vi命令
然后重啟nginx服務:
nginx支持的負載均衡的策略
輪詢策略
默認nginx支持的策略,來了請求之后 排隊把請求一個一個的分發出去。
權重策略
IP_HASH方式
根據 客戶端ip地址 固定分配到一臺服務器上,以后這個ip來的所有請求 都會只到這一個服務器上。
使用keepalived 完成 nginx 高可用配置
上面我們實現的集群方式 可以解決tomcat 服務器單點故障的問題,但是解決不了 nginx服務器單點故障的問題。
解決nginx 單點故障問題,市場上通用的解決方案就是使用keepalived 這種插件。
先安裝keepalived服務:
下面修改keepalived的配置文件: vim /etc/keepalived/keepalived.conf文件:
global_defs?{? notification_email?{? #keepalived如果檢測到nginx服務不能用會往這個郵件發信心? test@163.com? } #配置郵件服務器的信息? notification_email_from?keepalived@localhost? smtp_server?127.0.0.1? smtp_connect_timeout?30? router_id?LVS_MASTER } #聲明一個腳本? vrrp_script?chk_http_port?{? #檢測本機nginx的服務是否能用的腳本?這個腳本等下要自己編寫? script?"/usr/local/src/check_nginx_pid.sh"? #每隔多長時間自動調用上述腳本? interval?2? #權重? weight?2? } vrrp_instance?VI_1?{? #state?MASTER? #配置當前的nginx服務器是主機還是備機? state?BACKUP? #配置當前nginx服務是是否非搶占模式? #nopreempt? #配置心跳網卡的名稱? interface?ens33? #所有的keepalived的服務器的虛擬化路由都要一致? virtual_router_id?50? #nginx服務器的初始化權重? priority?100 #心跳連接發送的間隔? advert_int?1? #認證方式和認證密碼?要保證所有keepalive的服務器的驗證方式和密碼都一樣? authentication?{? auth_type?PASS? auth_pass?1111? } #啟用上述腳本? track_script?{ ?chk_http_port? } virtual_ipaddress?{? #配置了keeplived服務器之后再訪問tomcat集群虛擬的ip地址時多少 192.168.17.222? #虛擬ip? }? }
下一步,寫/usr/local/src/check_nginx_pid.sh這個腳本:
#!?/bin/bash? A=`ps?-C?nginx?--no-header?|wc?-l`? if?[?$A?-eq?0?];then? systemctl?start?nginx? if?[?`ps?-C?nginx?--no-header?|wc?-l`?-eq?0?];then? killall?keepalived? fi fi
創建好這個腳本之后 不要忘記修改文件的權限:
下面啟動keepalived服務:
systemctl?start?keepalived
相關推薦:《Linux視頻教程》