柚子快報(bào)邀請(qǐng)碼778899分享:運(yùn)維 Nginx的核心功能
柚子快報(bào)邀請(qǐng)碼778899分享:運(yùn)維 Nginx的核心功能
1. Nginx的核心功能
1.1 nginx反向代理功能
正向代理
代理的為客戶端,對(duì)于服務(wù)器不知道真實(shí)客戶的信息。例如:翻墻軟件
反向代理服務(wù)器
代理的為服務(wù)器端。對(duì)于客戶來(lái)說(shuō)不知道服務(wù)器的信息。例如:nginx
項(xiàng)目部署圖
web項(xiàng)目部署的虛擬機(jī)和Nginx的虛擬機(jī)可以為兩臺(tái)服務(wù)器【也可以在同一臺(tái)虛擬機(jī)上】,且網(wǎng)絡(luò)連接要保持一致,橋接網(wǎng)絡(luò)無(wú)法訪問(wèn)NAT網(wǎng)絡(luò)
若Nginx部署在橋接網(wǎng)絡(luò)模式的虛擬機(jī)上,web項(xiàng)目部署在NAT網(wǎng)絡(luò)模式的虛擬機(jī)上,此時(shí),通過(guò)訪問(wèn)橋接模式的虛擬機(jī)的ip無(wú)法訪問(wèn)web項(xiàng)目
若二者均部署在NAT網(wǎng)絡(luò)模式的虛擬機(jī)上,就可以成功訪問(wèn)
因?yàn)椴辉谕粋€(gè)網(wǎng)段
反向代理步驟
配置Nginx server {
listen 82;
server_name localhost;
location /{
# 代理的服務(wù)器地址
proxy_pass http://192.168.111.XXX:8080;
}
}
配置文件在/usr/nginx/conf目錄下——nginx.conf文件 防火墻放行對(duì)應(yīng)的端口號(hào) firewall-cmd --add-port=82/tcp --zone=public --permanent
重啟防火墻 systemctl restart firewalld
啟動(dòng)Nginx ./usr/nginx/sbin/nginx
訪問(wèn)時(shí)輸入nginx的地址和端口
1.2 nginx的負(fù)載均衡
負(fù)載均衡(Load Balance):把請(qǐng)求分?jǐn)偟蕉鄠€(gè)操作單元上進(jìn)行執(zhí)行,例如Web服務(wù)、FTP服務(wù)器、企業(yè)關(guān)鍵應(yīng)用服務(wù)器和其他關(guān)鍵任務(wù)服務(wù)器等,從而共同完成工作任務(wù)
web項(xiàng)目必須搭建集群模式
web服務(wù)器項(xiàng)目至少搭建2臺(tái)以上才可以達(dá)到集群模式
運(yùn)行springboot項(xiàng)目
運(yùn)行springboot項(xiàng)目
java -jar xxx.jar
注意:端口號(hào)要放行,放行后要重啟防火墻
配置nginx完成負(fù)載均衡
#定義集群名稱
upstream lay{
#真實(shí)web服務(wù)器集群信息
server ip:端口號(hào);
server ip:端口號(hào);
}
server{
listen 83;#監(jiān)聽(tīng)的端口號(hào)
server_name localhost;
location /{
proxy_pass http://lay;#集群名稱
}
}
重新加載nginx配置
/usr/nginx/sbin/nginx -s reload
測(cè)試
http://ip:端口號(hào)/資源
1.3 負(fù)載均衡的策略
默認(rèn)為輪詢 權(quán)重策略:服務(wù)器硬件配置不同時(shí)
#定義集群名稱
upstream lay{
#真實(shí)web服務(wù)器集群信息,weight的值越大權(quán)重越大,訪問(wèn)頻率越高
server ip:端口號(hào) weight=權(quán)值1;
server ip:端口號(hào) weight=權(quán)值2;
}
server{
listen 83;#監(jiān)聽(tīng)的端口號(hào)
server_name localhost;
location /{
proxy_pass http://lay;#集群名稱
}
}
weight的值越大權(quán)重越大,訪問(wèn)頻率越高
ip_hash策略:根據(jù)訪問(wèn)者客戶的ip固定訪問(wèn)對(duì)應(yīng)的web服務(wù)器
#定義集群名稱
upstream lay{
#真實(shí)web服務(wù)器集群信息
server ip:端口號(hào);
server ip:端口號(hào);
ip_hash;
}
server{
listen 83;#監(jiān)聽(tīng)的端口號(hào)
server_name localhost;
location /{
proxy_pass http://lay;#集群名稱
}
}
ip_hash;
花錢買第三方策略插件
1.4 nginx動(dòng)靜分離
動(dòng):動(dòng)態(tài)資源【接口】
靜:靜態(tài)資源【css、js、image】
分離:之前我們把靜態(tài)資源和動(dòng)態(tài)資源全部放在web服務(wù)器下?,F(xiàn)在把靜態(tài)資源放入nginx服務(wù)器下。動(dòng)態(tài)資源在web服務(wù)器下
步驟:
準(zhǔn)備web項(xiàng)目 把靜態(tài)資源放到nginx中
放在nginx安裝目錄的創(chuàng)建的static目錄中
配置nginx server{
listen 84;
server_name localhost;
location /{
proxy_pass http://ip:端口號(hào);
}
#以 下面的內(nèi)容 結(jié)尾
location ~ \.js|.css|.jpg|.png|.jpeg|.gif|.ico|.mp3|.mp4|.avi${
root static;#static中包含靜態(tài)資源
}
}
1.5 nginx的HA高可用的搭建
1.5.1 高可用的原理–keepalived
nginx如果宕機(jī),導(dǎo)致客戶無(wú)法訪問(wèn)項(xiàng)目。解決:搭建nginx的高可用如果nginx主節(jié)點(diǎn)宕機(jī),,如果切換到從節(jié)點(diǎn)【自動(dòng)】客戶難道要記住兩個(gè)nginx服務(wù)器的ip嗎?不可能。
2和3的問(wèn)題,通過(guò)keepalived組件解決
1.5.2 搭建HA高可用
安裝keepalived
yum install -y keepalived
默認(rèn)安裝在/etc/keepalived
修改keepalived.conf配置文件
主機(jī)點(diǎn)
global_defs {
notification_email {
acassen@firewall.loc
failover@firewall.loc
sysadmin@firewall.loc
}
notification_email_from Alexandre.Cassen@firewall.loc
# ip的地址
smtp_ server 虛擬機(jī)的ip
smtp_connect_timeout 30
router_id 虛擬機(jī)ip
}
# 執(zhí)行腳本
vrrp_script chk_http_port {
script "/usr/local/src/nginx_check.sh"
interval 2 # 每2s執(zhí)行一次該腳本
weight -20 # keepalive宕機(jī) 權(quán)重-20 優(yōu)先級(jí)
}
vrrp_instance VI_1 {
state MASTER # 角色
interface ens33 # 網(wǎng)卡名
virtual_router_id 51 # id 保證主從相同
priority 100 # 優(yōu)先級(jí) 主節(jié)點(diǎn)大于從節(jié)點(diǎn)
advert_int 1
authentication {
auth type PASS
auth pass 1111
}
virtual_ipaddress {
ip50 # 虛擬ip. 使用逗號(hào)隔開(kāi)
}
track_script {
chk_http_port # 追蹤nginx腳本
}
}
從節(jié)點(diǎn)
global_defs {
notification_email {
acassen@firewall.loc
failover@firewall.loc
sysadmin@firewall.loc
}
notification_email_from Alexandre.Cassen@firewall.loc
# ip的地址
smtp_ server 虛擬機(jī)的ip
smtp_connect_timeout 30
router_id 虛擬機(jī)ip
}
# 執(zhí)行腳本
vrrp_script chk_http_port {
script "/usr/local/src/nginx_check.sh"
interval 2 # 每2s執(zhí)行一次該腳本
weight -20 # keepalive宕機(jī) 權(quán)重-20 優(yōu)先級(jí)
}
vrrp_instance VI_1 {
state MASTER # 角色
interface ens33 # 網(wǎng)卡名
virtual_router_id 51 # id 保證主從相同
priority 100 # 優(yōu)先級(jí) 主節(jié)點(diǎn)大于從節(jié)點(diǎn)
advert_int 1
authentication {
auth type PASS
auth pass 1111
}
virtual_ipaddress {
ip50 # 虛擬ip. 使用逗號(hào)隔開(kāi)
}
track_script {
chk_http_port # 追蹤nginx腳本
}
}
nginx_check.sh腳本文件
該腳本文件可以放在/usr/local/src目錄下
#!/bin/bash
# 檢查是否開(kāi)啟nginx---統(tǒng)計(jì)nginx進(jìn)程的個(gè)數(shù)
A=`ps -C nginx --no-header |wc -l`
if [ $A -eq 0 ];then
pkill -9 keepalived
fi
詳細(xì)腳本
A=`ps -C nginx --no-header |wc -l`
if [ $A -eq 0 ];then #如果nginx沒(méi)有啟動(dòng)就啟動(dòng)nginx
/app/nginx/sbin/nginx #重啟nginx
if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then #nginx重啟失敗,則停掉keepalived服務(wù),進(jìn)行VIP轉(zhuǎn)移
pkill keepalived
fi
fi
修改權(quán)限:chmod 777 nginx_check.sh
使其成功啟動(dòng)
啟動(dòng)
nginx //nginx的啟動(dòng)命令
keepalived的啟動(dòng)命令:
systemctl start|stop keepalived
柚子快報(bào)邀請(qǐng)碼778899分享:運(yùn)維 Nginx的核心功能
推薦文章
本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場(chǎng)。
轉(zhuǎn)載請(qǐng)注明,如有侵權(quán),聯(lián)系刪除。