文章已收錄至https://lichong.work什湘,轉(zhuǎn)載請注明原文鏈接雷逆。
ps:歡迎關(guān)注公眾號“Fun肆編程”或添加我的私人微信交流經(jīng)驗(yàn)??
一.Nginx安裝配置及常用命令
1.環(huán)境搭建
首先在linux系統(tǒng)下安裝gcc編譯環(huán)境楔脯,執(zhí)行:
yum install gcc-c++ -y
確保當(dāng)前系統(tǒng)可以編譯nginx及其依賴包侣颂。
同時,安裝Nginx還需要以下依賴需要進(jìn)行安裝:
pcre-9.37.tar.gz
openssl-1.0.1t.tar.gz
zlib-1.2.8.tar.gz
nginx-1.11.1.tar.gz
下面通過兩種安裝方式安裝這些依賴迹辐,可靈活選擇安裝方式
(1)聯(lián)網(wǎng)下載壓縮包安裝依賴
(1.1)在linux文件夾下下載壓縮包蝶防,這里已/usr/src文件夾為例
cd /usr/src
wget http://downloads.sourceforge.net/project/pcre/pcre/8.37/pcre-8.37.tar.gz
(1.2) 解壓壓縮文件后進(jìn)入到該壓縮文件
tar -xvf pcre-8.37.tar.gz
cd pcre-8.37
(1.3)對當(dāng)前安裝包進(jìn)行配置檢查
./configure
(1.4)進(jìn)行編譯安裝
make && make install
(1.5)安裝完成,可通過命令查看是否安裝成功及當(dāng)前安裝版本
pcre-config --version
(2)安裝nginx的依賴
yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel
2.Nginx安裝
(1)到nginx官網(wǎng)下載安裝nginx明吩,推薦下載Stable version(穩(wěn)定版本)慧脱,本次安裝以nginx1.20.2為例。
(2)將nginx的壓縮包放到/usr/src中,進(jìn)入該目錄下對該壓縮包進(jìn)行解壓
cd /usr/src
tar -xvf nginx-1.20.2.tar.gz
(3) 進(jìn)入到解壓后的nginx文件夾
cd nginx-1.20.2
(4)對當(dāng)前安裝包進(jìn)行配置檢查
./configure
(5)進(jìn)行編譯安裝
make && make install
(6)進(jìn)到/usr/local/nginx/sbin文件夾中(安裝完nginx會在local文件夾中自動創(chuàng)建nginx文件)啟動nginx
cd /usr/local/nginx/sbin
./nginx
(7)查看已啟動的nginx進(jìn)程
ps -ef | grep nginx
2.Nginx配置
(1) 進(jìn)入nginx的配置文件夾
cd /usr/local/nginx/conf
(2)打開nginx.conf文件
vi nginx.conf
其中
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root html;
index index.html index.htm;
}
}
如果要配置固定端口號贺喝,則在server中的listen中修改端口號。此處默認(rèn)不改動宗兼。
(3) 防火墻開放nginx的端口躏鱼,此處以80端口為例
sudo firewall-cmd --add-port=80/tcp --permanent
firewall-cmd --reload
(4)從瀏覽器訪問該nginx(瀏覽器訪問linux的ip地址)
3.Nginx常用命令
以下命令基于已經(jīng)安裝成功Nginx后在Nginx的sbin文件夾下執(zhí)行。
cd /usr/local/nginx/sbin/
(1)查看nginx的版本號
./nginx –v
(2)啟動nginx
./nginx
(3) 關(guān)閉nginx
./nginx -s stop
(4) 重新加載nginx(一般用于更改完conf中的配置文件后殷绍,在不重啟nginx的情況下使配置文件生效)
./nginx -s reload
二染苛、反向代理
這里以已經(jīng)配置好的nginx反向代理tomcat為例。實(shí)現(xiàn)效果則為訪問nginx地址展示tomcat頁面。
1.在linux中安裝并啟動好tomcat用于測試茶行,并且開放tomcat的端口號躯概。
2.在nginx的nginx.conf配置文件中配置反向代理
cd /usr/local/nginx/conf
vi nginx.conf
3.配置反向代理
首先將server塊中的server_name修改為該linux系統(tǒng)的ip地址。
然后在server塊中的location當(dāng)中配置需要請求轉(zhuǎn)發(fā)的路徑畔师,其中proxy_pass則是tomcat的地址娶靡。
location / {
root html;
proxy_pass http://127.0.0.1:8080;
}
4.訪問nginx地址
三、負(fù)載均衡
nginx配備多臺服務(wù)器的情況下看锉,平均訪問每臺機(jī)器姿锭。
此次以兩臺tomcat服務(wù)器為例,一臺端口為8080伯铣,一臺端口為8081呻此。
1.在nginx配置文件中進(jìn)行負(fù)載均衡的配置
配置服務(wù)器地址
upstream myserver{
server xxx.xx.xx.14:8080;
server xxx.xx.xx.14:8081;
}
server{
listen 80;
server_name xxx.xx.xx.14
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
proxy_pass http://myserver; //這里的myserver是上面配置的upstream
root html;
index index.html index.htm;
}
}
2.負(fù)載均衡分配策略
1.輪詢
默認(rèn)情況下是輪詢策略,到nginx服務(wù)器中的每個請求按時間順序逐一分配到不同的后端服務(wù)器腔寡,如果后端服務(wù)器down調(diào)則自動剔除該服務(wù)器
2.權(quán)重weight
weight默認(rèn)為1焚鲜,權(quán)重越高被分配的客戶端越多,可根據(jù)服務(wù)器性能來配置相應(yīng)的權(quán)重放前。
可在upstream中配置
upstream myserver{
server xxx.xx.xx.14:8080 weight=2;//數(shù)值越大則需要處理的請求越多
server xxx.xx.xx.14:8081;
}
3.ip_hash
每個請求按照訪問ip的hash結(jié)果分配忿磅,也就是說同一ip訪問nginx會一直講請求發(fā)送給同一臺服務(wù)器。
upstream myserver{
ip_hash;
server xxx.xx.xx.14:8080 ;
server xxx.xx.xx.14:8081;
}
需要注意的nginx1.3.1版本之前ip_hash不能和權(quán)重weight共同使用犀斋。
當(dāng)有服務(wù)器需要剔除的時候贝乎,需要手動down掉
4.fair
upstream myserver{
ip_hash;
server xxx.xx.xx.14:8080 ;
server xxx.xx.xx.14:8081;
fair;
}
按后端服務(wù)器的響應(yīng)時間來分配請求,響應(yīng)時間短的優(yōu)先分配
5.least_conn
把請求轉(zhuǎn)發(fā)給連接數(shù)較少的后端服務(wù)器叽粹。在這種方式下可以達(dá)到更好的負(fù)載均衡效果
upstream myserver{
least_conn;
server xxx.xx.xx.14:8080 ;
server xxx.xx.xx.14:8081;
}
6.url_hash
按訪問url的hash結(jié)果來分配請求览效,使每個url定向到同一個后端服務(wù)器。
upstream myserver{
hash $request_uri;
server xxx.xx.xx.14:8080 ;
server xxx.xx.xx.14:8081;
}
四虫几、動靜分離
我們通過使用正則表達(dá)式來匹配過濾锤灿,以此來達(dá)到動態(tài)頁面和靜態(tài)頁面的操作可以交給不同的服務(wù)器。
以下配置實(shí)現(xiàn)的是當(dāng)為jpg辆脸,js和css文件的時候則訪問本地html文件里的靜態(tài)資源但校,如果訪問的是動態(tài)資源則由8080端口tomcat服務(wù)器處理
以下是nginx.conf文件的配置
server{
listen 80;
server_name xxx.xx.xx.14
#charset koi8-r;
#access_log logs/host.access.log main;
location ~ \.jpg$ {
root html;
expires 30d;
}
location ~ \.js$ {
root html;
expires 30d;
}
location ~ \.css$ {
root html;
expires 30d;
}
location ~ .*$ {
proxy_pass http://localhost:8080
}
}
五、高可用集群
這里介紹下雙機(jī)高可用啡氢,主要分為兩種:
(一).Nginx+keepalived雙機(jī)主從模式
一臺主服務(wù)器和一臺熱備服務(wù)器状囱。正常情況下主服務(wù)器提供服務(wù),只有當(dāng)主服務(wù)器發(fā)生故障的時候熱備服務(wù)器才會接管主服務(wù)器倘是。但是當(dāng)主服務(wù)器不出現(xiàn)故障的時候亭枷,則熱備服務(wù)器就會處于浪費(fèi)狀態(tài)
(二).Nginx+keepalived雙機(jī)主主模式
使用兩臺負(fù)載均衡服務(wù)器,互為主備搀崭,兩臺服務(wù)器都屬于活動狀態(tài)叨粘,只有當(dāng)其中一臺發(fā)生故障時由另一臺接管故障服務(wù)器的請求。這種方案比較經(jīng)濟(jì)實(shí)惠。
下面分別介紹下這兩種模式的配置:
1.Nginx+keepalived雙機(jī)主從模式
配備兩臺nginx服務(wù)器升敲,每臺中配置keepalived答倡。
(1)配備兩臺服務(wù)器,并且在兩臺服務(wù)器中安裝nginx(安裝見上)
(2)在兩臺服務(wù)器中安裝keepalived
yum install keepalived -y
(3)打開keepalived所在文件夾
cd /etc/keepalived/
(3)對keepalived進(jìn)行配置
vi keepalived.conf
(4)在keepalived.conf具體參數(shù)配置
主服務(wù)器配置如下
vrrp_instance VI_1 {
state MASTER //主從劃分驴党,主服務(wù)器為MASTER從服務(wù)器為BACKUP
interface eth0 //設(shè)置為當(dāng)前網(wǎng)卡(通過ifconfig查看)
virtual_router_id 51 //主從服務(wù)器設(shè)置相同的id
priority 100 //優(yōu)先級 主服務(wù)器的優(yōu)先級設(shè)置為較大瘪撇,從服務(wù)器次之
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
xxx.xx.xx.111 //虛擬地址,瀏覽器通過該地址訪問鼻弧,主從配置相同
}
}
從服務(wù)器配置如下
vrrp_instance VI_1 {
state BACKUP
interface eth0 //設(shè)置為當(dāng)前網(wǎng)卡(通過ifconfig查看)
virtual_router_id 51
priority 90
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
xxx.xx.xx.111
}
}
主從服務(wù)器都在keepalived.conf中添加如下檢測腳本檢測腳本
vrrp_script chk_http_port {
script "usr/local/src/nginx_check.sh" //nginx_check.sh所在位置设江,該文件通過下個步驟中新建
interval 2
weight2
}
在script配置路徑下配置該檢測腳本
cd /usr/local/src/
將以下腳本生成nginx_check.sh文件放到 usr/local/src/中
#!/bin/bash
A=`ps -C nginx – no-header |wc -l`
if [ $A -eq 0 ];then
/usr/local/nginx/sbin/nginx
sleep 2
if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then
killall keepalived
fi
fi
(5)兩臺服務(wù)器上啟動nginx和keepalived
./nginx
systemctl start keepalived.service
(6)測試
訪問keepalived.conf中配置的虛擬ip地址,可以正常訪問服務(wù)器攘轩。將主服務(wù)器中的nginx中停止叉存,仍可正常訪問,此時訪問的實(shí)際上是從服務(wù)器上的資源
2.Nginx+keepalived雙機(jī)主主模式
在兩臺機(jī)器上都安裝nginx和keepalived度帮。具體安裝方式見上歼捏。
(1)第一臺keepalived配置
! Configuration File for keepalived
global_defs {
notification_email {
acassen@firewall.loc
failover@firewall.loc
sysadmin@firewall.loc
}
notification_email_from Alexandre.Cassen@firewall.loc
smtp_server 192.168.200.1
smtp_connect_timeout 30
router_id LVS_DEVEL
}
vrrp_script chk_http_port {
script "usr/local/src/nginx_check.sh"
interval 2 #(檢測腳本執(zhí)行的間隔)
weight 2
}
vrrp_instance VI_1 {
state MASTER
interface eno16777736
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
xxx.xx.xx.112
}
}
vrrp_instance VI_2 {
state BACKUP
interface eno16777736
virtual_router_id 52
priority 90
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
xxx.xx.xx.113
}
}
(2)第二臺keepalived配置
! Configuration File for keepalived
global_defs {
notification_email {
acassen@firewall.loc
failover@firewall.loc
sysadmin@firewall.loc
}
notification_email_from Alexandre.Cassen@firewall.loc
smtp_server 192.168.200.1
smtp_connect_timeout 30
router_id LVS_DEVEL
}
vrrp_script chk_http_port {
script "usr/local/src/nginx_check.sh"
interval 2 #(檢測腳本執(zhí)行的間隔)
weight 2
}
vrrp_instance VI_1 {
state BACKUP
interface eno16777736
virtual_router_id 51
priority 90
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
xxx.xx.xx.112
}
}
vrrp_instance VI_2 {
state MASTER
interface eno16777736
virtual_router_id 52
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
xxx.xx.xx.113
}
}
在雙機(jī)主主模式下,兩臺服務(wù)器都屬于活動狀態(tài)笨篷,只有當(dāng)其中一臺發(fā)生故障時由另一臺接管故障服務(wù)器的請求瞳秽。
六、推薦參數(shù)配置
可參考文章:【工具-Nginx】Nginx高性能通用配置文件-注釋版-支持防刷限流率翅、可控高并發(fā)练俐、HTTP2、防XSS冕臭、Gzip腺晾、OCSP Stapling、負(fù)載辜贵、SSL
文章已收錄至https://lichong.work悯蝉,轉(zhuǎn)載請注明原文鏈接。
ps:歡迎關(guān)注公眾號“Fun肆編程”或添加我的私人微信交流經(jīng)驗(yàn)??
<center><font color="DeepSkyBlue">~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~<strong>往期精選??</strong>~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~</font></center>
【前端-開發(fā)環(huán)境】使用NVM實(shí)現(xiàn)不同nodejs版本的自由切換(NVM完整安裝使用手冊)
【前端-NPM私服】內(nèi)網(wǎng)使用verdaccio搭建私有npm服務(wù)器
【前端-IE兼容】Win10和Win11使用Edge調(diào)試前端兼容IE6托慨、IE7鼻由、IE8、IE9厚棵、IE10蕉世、IE11問題
【工具-Shell腳本】java程序產(chǎn)品包模板-linux和windows通用shell啟動停止腳本(無需系統(tǒng)安裝Java運(yùn)行環(huán)境)
【工具-Nginx】Nginx高性能通用配置文件-注釋版-支持防刷限流、可控高并發(fā)婆硬、HTTP2讨彼、防XSS、Gzip柿祈、OCSP Stapling、負(fù)載、SSL
【工具-WireShark】網(wǎng)絡(luò)HTTP抓包使用教程
【后端-maven打包】通過profile標(biāo)簽解決同時打jar包 war包需求
【后端-SpringCache】基于Spring Cache封裝一個能夠批量操作的Redis緩存記錄下踩坑歷程(pipeline或mget封裝)
【后端-SkyWalking】SkyWalking前后端開發(fā)環(huán)境搭建詳細(xì)教程步驟-6.x/7.x/8.x版本通用-插件二次開發(fā)利器(一)
<p align="right"><font color="red"><strong>?歡迎為耿直少年點(diǎn)贊躏嚎、關(guān)注蜜自、收藏!B丁重荠!</strong></font></p>
<p align="right"><font color="red"><strong>??????</strong></font></p>