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