日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > Nginx >内容正文

Nginx

Nginx系列二:(Nginx Rewrite 规则、Nginx 防盗链、Nginx 动静分离、Nginx+keepalived 实现高可用)...

發(fā)布時(shí)間:2023/12/10 Nginx 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Nginx系列二:(Nginx Rewrite 规则、Nginx 防盗链、Nginx 动静分离、Nginx+keepalived 实现高可用)... 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一、Nginx Rewrite 規(guī)則

1. Nginx rewrite規(guī)則

Rewrite規(guī)則含義就是某個(gè)URL重寫成特定的URL(類似于Redirect),從某種意義上說為了美觀或者對搜索引擎友好,提高收錄量及排名等。

語法:

rewrite<regex><replacement>[flag]
關(guān)鍵字正則替代內(nèi)容flag標(biāo)記

?

?

Rewrite規(guī)則的flag標(biāo)記主要有以下幾種:
1) last : 相當(dāng)于Apache里的(L)標(biāo)記,表示完成rewrite;
2) break: 本條規(guī)則匹配完成后,終止匹配,不再匹配后面的規(guī)則
3) redirect: 返回302臨時(shí)重定向,瀏覽器地址會顯示跳轉(zhuǎn)后的URL地址
4) permanent:返回301永久重定向,瀏覽器地址欄會顯示跳轉(zhuǎn)后的URL地址
last和break用來實(shí)現(xiàn)URL重寫,瀏覽器地址欄URL地址不變

2. Nginx rewrite例子

a) 例如用戶訪問www.dbspread.com,想直接跳轉(zhuǎn)到網(wǎng)站下面的某個(gè)頁面,www.dbspread.com/new.index.html如何來實(shí)現(xiàn)呢?? ?我們可以使用Nginx Rewrite 來實(shí)現(xiàn)這個(gè)需求,具體如下:在server中加入如下語句即可:

server {listen 80; #監(jiān)聽80端口server_name www.dbspread.com; #域名#rewrite規(guī)則index index.jsp index.html index.htm;root /usr/local/nginx/html; #定義服務(wù)器的默認(rèn)網(wǎng)站根目錄位置#監(jiān)聽完成以后通過斜桿(/)攔截請求轉(zhuǎn)發(fā)到后端的tomcat服務(wù)器location / {#如果后端的服務(wù)器返回502、504、執(zhí)行超時(shí)等錯(cuò)誤,自動將請求轉(zhuǎn)發(fā)到upstream負(fù)載均衡池中的另一臺服務(wù)器,實(shí)現(xiàn)故障轉(zhuǎn)移。proxy_next_upstream http_502 http_504 error timeout invalid_header;proxy_set_header Host $host; #獲取客戶端的主機(jī)名存到變量Host里面,從而讓tomcat取到客戶端機(jī)器的信息proxy_set_header X-Real-IP $remote_addr; #獲取客戶端的主機(jī)名存到變量X-Real-IP里面,從而讓tomcat取到客戶端機(jī)器的信息proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;rewrite ^/$ http://www.dbspread.com/new.index.html permanent;proxy_pass http://web1; #跳轉(zhuǎn)到對應(yīng)的應(yīng)用web1} }

效果圖如下:

rewrite ^/$ http://www.dbspread.com/new.index.html permanent; 對應(yīng)如下語法:rewrite <regex> <replacement> [flag];關(guān)鍵字 正則 替代內(nèi)容 flag標(biāo)記

正則表達(dá)式說明:

*代表前面0或更多個(gè)字符 +代表前面1或更多個(gè)字符 ?代表前面0或1個(gè)字符 ^代表字符串的開始位置 $代表字符串結(jié)束的位置 。為通配符,代表任何字符

b)例如多個(gè)域名跳轉(zhuǎn)到同一個(gè)域名,nginx rewrite規(guī)則寫法如下:

server {listen 80; #監(jiān)聽80端口server_name www.dbspread.com; #域名#rewrite規(guī)則index index.jsp index.html index.htm;root /usr/local/nginx/html; #定義服務(wù)器的默認(rèn)網(wǎng)站根目錄位置if ($host != 'www.dbspread.com' ){ rewrite ^/(.*)$ http://www.dbspread.com/$1 permanent;} }

格式:
rewrite <regex> <replacement> [flag];
關(guān)鍵字? ? ?正則? ? ? ? ? 替代內(nèi)容 flag標(biāo)記
說明:
rewrite為固定關(guān)鍵字,表示開始進(jìn)行rewrite匹配規(guī)則、
regex部分是 ^/(.*) ,這是一個(gè)正則表達(dá)式,匹配完整的域名和后面的路徑地址
replacement部分是http://www.dbspread.com/$1,$1是取自regex部分( )里的內(nèi)容。匹配成功后跳轉(zhuǎn)到的URL。
flag部分 permanent表示永久301重定向標(biāo)記,即跳轉(zhuǎn)到新的 http://www.dbspread.com/$1 地址上

二、Nginx 防盜鏈

1.?什么是防盜鏈

比如http://www.dbspread.com/download/av123.rmvb 這個(gè)視頻下載地址被其他網(wǎng)站引用,比如在www.test.com的index.html引用download/av123.rmvb就叫盜鏈,我們要禁止這種引用就叫做防盜鏈

2. 怎么實(shí)現(xiàn)防盜鏈

在nginx的nginx.conf的server里面配置如下代碼

server {listen 80;server_name www.dbspread.com *.dbspread.com;location ~* \.(rmvb|jpg|png|swf|flv)$ { #rmvb|jpg|png|swf|flv表示對rmvb|jpg|png|swf|flv后綴的文件實(shí)行防盜鏈valid_referers none blocked www.dbspread.com; #表示對www.dbspread.com此域名開通白名單,比如在www.test.com的index.html引用download/av123.rmvb,無效root html/b;if ($invalid_referer) { #如果請求不是從www.dbspread.com白名單發(fā)出來的請求,直接重定向到403.html這個(gè)頁面或者返回403 #rewrite ^/ http://www.dbspread.com/403.html;return 403;}}}

三、Nginx 動靜分離

1. 動靜分離是什么

Nginx動靜分離是讓動態(tài)網(wǎng)站里的動態(tài)網(wǎng)頁根據(jù)一定規(guī)則把不變的資源和經(jīng)常變的資源區(qū)分開來,動靜資源做好了拆分以后,我們就可以根據(jù)靜態(tài)資源的特點(diǎn)將其做緩存操作,這就是網(wǎng)站靜態(tài)化處理的核心思路。

2. 動靜分離原理圖

3. Nginx動靜分離應(yīng)該注意的地方

1). WEB項(xiàng)目開發(fā)時(shí)要注意,將靜態(tài)資源盡量放在一個(gè)static文件夾
2). 將static靜態(tài)資源文件夾放到Nginx可以取到的位置
3). 頁面要建立全局變量路徑,方便修改路徑
4). 修改nginx.conf的location, 匹配靜態(tài)資源請求

4. Nginx動靜分離步驟

4.1 準(zhǔn)備一個(gè)靜態(tài)資源button.css

body {margin: 10px 20px;text-align: center;font-family: Arial, sans-serif;background-color: red; }

4.2? 在/var/local下新建一個(gè)static文件夾用來存放靜態(tài)資源button.css

4.3 在tomcat-8080/webapps/ROOT下的index.html里面引入button.css

<html><head> <link rel="stylesheet" type="text/css" href="http://www.static.com/button.css" /><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"><meta name="renderer" content="webkit"><meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no"><title>test</title></head><body>歡迎來到8080端口tomcat</body> </html>

?4.4 在nginx的nginx.conf中server節(jié)點(diǎn)新增靜態(tài)資源分離的配置

server {listen 80; #監(jiān)聽80端口server_name www.dbspread.com; #域名#rewrite規(guī)則index index.jsp index.html index.htm;root /usr/local/nginx/html; #定義服務(wù)器的默認(rèn)網(wǎng)站根目錄位置#重定向if ($host != 'www.dbspread.com' ){ rewrite ^/(.*)$ http://www.dbspread.com/$1 permanent;}#防盜鏈location ~* \.(rmvb|jpg|png|swf|flv)$ { #rmvb|jpg|png|swf|flv表示對rmvb|jpg|png|swf|flv后綴的文件實(shí)行防盜鏈valid_referers none blocked www.dbspread.com; #表示對www.dbspread.com此域名開通白名單,比如在www.test.com的index.html引用download/av123.rmvb,無效root html/b;if ($invalid_referer) { #如果請求不是從www.dbspread.com白名單發(fā)出來的請求,直接重定向到403.html這個(gè)頁面或者返回403 #rewrite ^/ http://www.dbspread.com/403.html;return 403;}}#監(jiān)聽完成以后通過斜桿(/)攔截請求轉(zhuǎn)發(fā)到后端的tomcat服務(wù)器location / {#如果后端的服務(wù)器返回502、504、執(zhí)行超時(shí)等錯(cuò)誤,自動將請求轉(zhuǎn)發(fā)到upstream負(fù)載均衡池中的另一臺服務(wù)器,實(shí)現(xiàn)故障轉(zhuǎn)移。proxy_next_upstream http_502 http_504 error timeout invalid_header;proxy_set_header Host $host; #獲取客戶端的主機(jī)名存到變量Host里面,從而讓tomcat取到客戶端機(jī)器的信息proxy_set_header X-Real-IP $remote_addr; #獲取客戶端的主機(jī)名存到變量X-Real-IP里面,從而讓tomcat取到客戶端機(jī)器的信息proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;#rewrite ^/$ http://www.dbspread.com/new.index.html permanent;#用戶訪問www.dbspread.com,想直接跳轉(zhuǎn)到網(wǎng)站下面的某個(gè)頁面:www.dbspread.com/new.index.htmlproxy_pass http://web1; #跳轉(zhuǎn)到對應(yīng)的應(yīng)用web1}# location ~ .*\.(php|jsp|cgi|shtml)?$ #動態(tài)分離 ~匹配 以.*結(jié)尾(以PHP JSP結(jié)尾走這段)# {# proxy_set_header Host $host;# proxy_set_header X-Real-IP $remote_addr;# proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;# proxy_pass http://jvm_web2;# }#靜態(tài)分離 ~匹配 以.*結(jié)尾(以html|htm|gif|jpg|jpeg|bmp|png|ico|txt|js|css結(jié)尾走這段),當(dāng)然不是越久越好,如果有10000個(gè)用戶在線,都保存幾個(gè)月,系統(tǒng)托跨location ~ .*\.(html|htm|gif|jpg|jpeg|bmp|png|ico|txt|js|css)$ {root /var/local/static; #靜態(tài)資源存放在nginx的安裝機(jī)器上#proxy_pass http://www.static.com; #靜態(tài)資源也可存放在遠(yuǎn)程服務(wù)器上expires 30d; #30天之內(nèi)只要訪問過一次就從緩存拿}#日志級別有[debug|info|notice|warn|error|crit] error_log 級別分為 debug, info, notice, warn, error, crit 默認(rèn)為crit, 生產(chǎn)環(huán)境用error #crit 記錄的日志最少,而debug記錄的日志最多access_log /usr/local/logs/web2/access.log main;error_log /usr/local/logs/web2/error.log crit;}

4.5 訪問頁面查看效果

四、Nginx+keepalived? 實(shí)現(xiàn)高可用

1.?keepalived是什么

Keepalived軟件起初是專為LVS負(fù)載均衡軟件設(shè)計(jì)的,用來管理并監(jiān)控LVS集群系統(tǒng)中各個(gè)服務(wù)節(jié)點(diǎn)的狀態(tài),后來又加入了可以實(shí)現(xiàn)高可用的VRRP (Virtual Router Redundancy Protocol ,虛擬路由器冗余協(xié)議)功能。因此,Keepalived除了能夠管理LVS軟件外,還可以作為其他服務(wù)(例如:Nginx、Haproxy、MySQL等)的高可用解決方案軟件

2.?keepalived主要功能

管理LVS負(fù)載均衡軟件
實(shí)現(xiàn)LVS集群節(jié)點(diǎn)的健康檢查
作為系統(tǒng)網(wǎng)絡(luò)服務(wù)的高可用性(failover)

3.?keepalived故障轉(zhuǎn)移

Keepalived高可用服務(wù)之間的故障切換轉(zhuǎn)移,是通過 VRRP 來實(shí)現(xiàn)的。
在 Keepalived服務(wù)正常工作時(shí),主 Master節(jié)點(diǎn)會不斷地向備節(jié)點(diǎn)發(fā)送(多播的方式)心跳消息,用以告訴備Backup節(jié)點(diǎn)自己還活著,當(dāng)主 Master節(jié)點(diǎn)發(fā)生故障時(shí),就無法發(fā)送心跳消息,備節(jié)點(diǎn)也就因此無法繼續(xù)檢測到來自主 Master節(jié)點(diǎn)的心跳了,于是調(diào)用自身的接管程序,接管主Master節(jié)點(diǎn)的 IP資源及服務(wù)。而當(dāng)主 Master節(jié)點(diǎn)恢復(fù)時(shí),備Backup節(jié)點(diǎn)又會釋放主節(jié)點(diǎn)故障時(shí)自身接管的IP資源及服務(wù),恢復(fù)到原來的備用角色。

說明:keepalived的主從切換和redis的主從切換是不一樣的,keepalived的主節(jié)點(diǎn)掛了以后,從節(jié)點(diǎn)變?yōu)橹鞴?jié)點(diǎn),之前的主節(jié)點(diǎn)恢復(fù)以后繼續(xù)做主節(jié)點(diǎn)。redis的主節(jié)點(diǎn)掛了以后,重新恢復(fù)以后變?yōu)閺墓?jié)點(diǎn)

4.?keepalived高可用架構(gòu)示意圖

說明:

虛擬ip(VIP):192.168.152.200,對外提供服務(wù)的ip,也可稱作浮動ip
192.168.152.130:nginx + keepalived master 主
192.168.152.129:nginx + keepalived backup 從
192.168.152.129:tomcat-8080
192.168.152.129:tomcat-8081

5.?keepalived安裝

環(huán)境準(zhǔn)備:

centos6、jdk

虛擬ip(VIP):192.168.152.200,對外提供服務(wù)的ip,也可稱作浮動ip
192.168.152.130:nginx + keepalived master 主
192.168.152.129:nginx + keepalived backup 從
192.168.152.129:tomcat-8080
192.168.152.129:tomcat-8081

nginx和tomcat的環(huán)境準(zhǔn)備請查看我的前一篇關(guān)于nginx的文章

5.1 安裝keepalived的步驟:

注:192.168.152.129(keepalived從節(jié)點(diǎn)) 與 192.168.152.130(keepalived主節(jié)點(diǎn))先安裝好nginx + keepalived

下載壓縮包:

wget www.keepalived.org/software/keepalived-1.3.5.tar.gz

解壓縮:

tar -zxvf keepalived-1.3.5.tar.gz

進(jìn)入解壓縮以后的文件目錄:

cd keepalived-1.3.5

編譯安裝:
./configure --prefix=/usr/local/keepalived
系統(tǒng)提示警告 *** WARNING - this build will not support IPVS with IPv6. Please install libnl/libnl-3 dev libraries to support IPv6 with IPVS.
yum -y install libnl libnl-devel
再次執(zhí)行
./configure --prefix=/usr/local/keepalived
系統(tǒng)提示錯(cuò)誤 configure: error: libnfnetlink headers missing
yum install -y libnfnetlink-devel
再次執(zhí)行
./configure --prefix=/usr/local/keepalived

?make && make install

到此keepalived安裝完成,但是接下來還有最關(guān)鍵的一步,如果這一步?jīng)]有做后面啟動keepalived的時(shí)候會報(bào)找不到配置文件的錯(cuò)誤

Configuration file '/etc/keepalived/keepalived.conf' is not a regular non-executable file

安裝完成后,進(jìn)入安裝目錄的etc目錄下,將keepalived相應(yīng)的配置文件拷貝到系統(tǒng)相應(yīng)的目錄當(dāng)中。keepalived啟動時(shí)會從/etc/keepalived目錄下查找keepalived.conf配置文件

mkdir /etc/keepalived

cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived

5.2 修改keepalived主節(jié)點(diǎn)192.168.152.130的/etc/keepalived/keepalived.conf配置文件

#全局配置 global_defs { notification_email {leeSmall@qq.com #設(shè)置報(bào)警郵件地址,可以設(shè)置多個(gè),每行一個(gè)。需要開啟sendmail服務(wù)。}notification_email_from sns-lvs@gmail.comsmtp_server smtp.hysec.com #設(shè)置SMTP Server地址smtp_connection_timeout 30 #設(shè)置SMTP Server的超時(shí)時(shí)間router_id nginx_master #表示運(yùn)行Keepalived服務(wù)器的一個(gè)標(biāo)識,唯一的 } #檢測腳本 vrrp_script chk_http_port {script "/usr/local/src/check_nginx_pid.sh" #心跳執(zhí)行的腳本,檢測nginx是否啟動interval 2 #(檢測腳本執(zhí)行的間隔,單位是秒)weight 2 #權(quán)重 } #vrrp 實(shí)例定義部分 vrrp_instance VI_1 { state MASTER # 指定keepalived的角色,MASTER為主,BACKUP為備interface eth0 # 當(dāng)前進(jìn)行vrrp通訊的網(wǎng)絡(luò)接口卡(當(dāng)前centos的網(wǎng)卡) 用ifconfig查看你具體的網(wǎng)卡virtual_router_id 66 # 虛擬路由編號,主從要一直priority 100 # 優(yōu)先級,數(shù)值越大,獲取處理請求的優(yōu)先級越高advert_int 1 # 檢查間隔,默認(rèn)為1s(vrrp組播周期秒數(shù))#授權(quán)訪問authentication {auth_type PASS #設(shè)置驗(yàn)證類型和密碼,MASTER和BACKUP必須使用相同的密碼才能正常通信auth_pass 1111}track_script {chk_http_port #(調(diào)用檢測腳本)}virtual_ipaddress {192.168.152.200 # 定義虛擬ip(VIP),可多設(shè),每行一個(gè)} }

5.3 修改keepalived從節(jié)點(diǎn)192.168.152.129的/etc/keepalived/keepalived.conf配置文件

#全局配置 global_defs {notification_email {leeSmall@qq.com #設(shè)置報(bào)警郵件地址,可以設(shè)置多個(gè),每行一個(gè)。需要開啟sendmail服務(wù)。}notification_email_from sns-lvs@gmail.comsmtp_server smtp.hysec.com #設(shè)置SMTP Server地址smtp_connection_timeout 30 #設(shè)置SMTP Server的超時(shí)時(shí)間router_id nginx_backup # 設(shè)置nginx backup的id,在一個(gè)網(wǎng)絡(luò)應(yīng)該是唯一的 } #檢測腳本 vrrp_script chk_http_port {script "/usr/local/src/check_nginx_pid.sh" #心跳執(zhí)行的腳本,檢測nginx是否啟動interval 2 #(檢測腳本執(zhí)行的間隔)weight 2 #權(quán)重 } #vrrp 實(shí)例定義部分 vrrp_instance VI_1 {state BACKUP # 指定keepalived的角色,MASTER為主,BACKUP為備interface eth0 # 當(dāng)前進(jìn)行vrrp通訊的網(wǎng)絡(luò)接口卡(當(dāng)前centos的網(wǎng)卡) 用ifconfig查看你具體的網(wǎng)卡virtual_router_id 66 # 虛擬路由編號,主從要一直priority 99 # 優(yōu)先級,數(shù)值越大,獲取處理請求的優(yōu)先級越高advert_int 1 # 檢查間隔,默認(rèn)為1s(vrrp組播周期秒數(shù))#授權(quán)訪問authentication {auth_type PASS #設(shè)置驗(yàn)證類型和密碼,MASTER和BACKUP必須使用相同的密碼才能正常通信auth_pass 1111}track_script {chk_http_port #(調(diào)用檢測腳本)}virtual_ipaddress {192.168.152.200 # 定義虛擬ip(VIP),可多設(shè),每行一個(gè)} }

5.4 檢查nginx是否啟動的shell腳本

/usr/local/src/check_nginx_pid.sh

#!/bin/bash #檢測nginx是否啟動了 A=`ps -C nginx --no-header |wc -l` if [ $A -eq 0 ];then #如果nginx沒有啟動就啟動nginx /usr/local/nginx/sbin/nginx #重啟nginxif [ `ps -C nginx --no-header |wc -l` -eq 0 ];then #nginx重啟失敗,則停掉keepalived服務(wù),進(jìn)行VIP轉(zhuǎn)移killall keepalived fi fi

5.5?192.168.152.130(keepalived主節(jié)點(diǎn))和?192.168.152.129(keepalived從節(jié)點(diǎn))的nginx的配置文件nginx.conf

user root root; #使用什么用戶啟動NGINX 在運(yùn)行時(shí)使用哪個(gè)用戶哪個(gè)組 worker_processes 4; #啟動進(jìn)程數(shù),一般是1或8個(gè),根據(jù)你的電腦CPU數(shù),一般8個(gè) worker_cpu_affinity 00000001 00000010 00000100 00001000; #CPU邏輯數(shù)——把每個(gè)進(jìn)程分別綁在CPU上面,為每個(gè)進(jìn)程分配一個(gè)CPU #pid /usr/local/nginx/logs/nginx.pid worker_rlimit_nofile 102400; #一個(gè)進(jìn)程打開的最大文件數(shù)目,與NGINX并發(fā)連接有關(guān)系#工作模式及連接數(shù)上限 events {use epoll; #多路復(fù)用IO 基于LINUX2.6以上內(nèi)核,可以大大提高NGINX的性能 uname -a查看內(nèi)核版本號worker_connections 102400; #單個(gè)worker process最大連接數(shù),其中NGINX最大連接數(shù)=連接數(shù)*進(jìn)程數(shù),一般1GB內(nèi)存的機(jī)器上可以打開的最大數(shù)大約是10萬左右multi_accept on; #盡可能多的接受請求,默認(rèn)是關(guān)閉狀態(tài) }#處理http請求的一個(gè)應(yīng)用配置段 http {#引用mime.types,這個(gè)類型定義了很多,當(dāng)web服務(wù)器收到靜態(tài)的資源文件請求時(shí),依據(jù)請求文件的后綴名在服務(wù)器的MIME配置文件中找到對應(yīng)的MIME #Type,根據(jù)MIMETYPE設(shè)置并response響應(yīng)類型(Content-type)include mime.types; default_type application/octet-stream; #定義的數(shù)據(jù)流,有的時(shí)候默認(rèn)類型可以指定為text,這跟我們的網(wǎng)頁發(fā)布還是資源下載是有關(guān)系的fastcgi_intercept_errors on; #表示接收fastcgi輸出的http 1.0 response codecharset utf-8;server_names_hash_bucket_size 128; #保存服務(wù)器名字的hash表#用來緩存請求頭信息的,容量4K,如果header頭信息請求超過了,nginx會直接返回400錯(cuò)誤,先根據(jù)client_header_buffer_size配置的值分配一個(gè)buffer,如果##分配的buffer無法容納request_line/request_header,那么就會##再次根據(jù)large_client_header_buffers配置的參數(shù)分配large_buffer,如果large_buffer還是無#法容納,那么就會返回414(處理request_line)/400(處理request_header)錯(cuò)誤。client_header_buffer_size 4k; large_client_header_buffers 4 32k;client_max_body_size 300m; #允許客戶端請求的最大單文件字節(jié)數(shù) 上傳文件時(shí)根據(jù)需求設(shè)置這個(gè)參數(shù)#指定NGINX是否調(diào)用這個(gè)函數(shù)來輸出文件,對于普通的文件我們必須設(shè)置為ON,如果NGINX專門做為一個(gè)下載端的話可以關(guān)掉,好處是降低磁盤與網(wǎng)絡(luò)的IO處理數(shù)及#系統(tǒng)的UPTIMEsendfile on; #autoindex on;開啟目錄列表訪問,適合下載服務(wù)器tcp_nopush on; #防止網(wǎng)絡(luò)阻塞#非常重要,根據(jù)實(shí)際情況設(shè)置值,超時(shí)時(shí)間,客戶端到服務(wù)端的連接持續(xù)有效時(shí)間,60秒內(nèi)可避免重新建立連接,時(shí)間也不能設(shè)太長,太長的話,若請求數(shù)10000##,都占用連接會把服務(wù)托死keepalive_timeout 60;tcp_nodelay on; #提高數(shù)據(jù)的實(shí)時(shí)響應(yīng)性client_body_buffer_size 512k; #緩沖區(qū)代理緩沖用戶端請求的最大字節(jié)數(shù)(請求多)proxy_connect_timeout 5; #nginx跟后端服務(wù)器連接超時(shí)時(shí)間(代理連接超時(shí))proxy_read_timeout 60; #連接成功后,后端服務(wù)器響應(yīng)時(shí)間(代理接收超時(shí))proxy_send_timeout 5; #后端服務(wù)器數(shù)據(jù)回傳時(shí)間(代理發(fā)送超時(shí))proxy_buffer_size 16k; #設(shè)置代理服務(wù)器(nginx)保存用戶頭信息的緩沖區(qū)大小proxy_buffers 4 64k; #proxy_buffers緩沖區(qū),網(wǎng)頁平均在32k以下的話,這樣設(shè)置proxy_busy_buffers_size 128k; #高負(fù)荷下緩沖大小proxy_temp_file_write_size 128k; #設(shè)定緩存文件夾大小,大于這個(gè)值,將從upstream服務(wù)器傳gzip on; #NGINX可以壓縮靜態(tài)資源,比如我的靜態(tài)資源有10M,壓縮后只有2M,那么瀏覽器下載的就少了gzip_min_length 1k;gzip_buffers 4 16k;gzip_http_version 1.1;gzip_comp_level 2; #壓縮級別大小,最小1,最大9.值越小,壓縮后比例越小,CPU處理更快,為1時(shí),原10M壓縮完后8M,但設(shè)為9時(shí),壓縮完可能只有2M了。一般設(shè)置為2gzip_types text/plain application/x-javascript text/css application/xml; #壓縮類型:text,js css xml 都會被壓縮gzip_vary on; #作用是在http響應(yīng)中增加一行目的是改變反向代理服務(wù)器的緩存策略#日志格式 log_format main '$remote_addr - $remote_user [$time_local] "$request" ' #ip 遠(yuǎn)程用戶 當(dāng)?shù)貢r(shí)間 請求URL'$status $body_bytes_sent "$http_referer" ' #狀態(tài) 發(fā)送的大小 響應(yīng)的頭'"$http_user_agent" $request_time'; #客戶端使用的瀏覽器 頁面響應(yīng)的時(shí)間#動態(tài)轉(zhuǎn)發(fā) upstream web1 {#每個(gè)請求按訪問ip的hash結(jié)果分配,這樣每個(gè)訪客固定訪問一個(gè)后端服務(wù)器,可以解決session的問題。配置了ip_hash就沒有負(fù)載均衡的效果了,每次訪問的都是同一個(gè)tomcat#ip_hash; #轉(zhuǎn)發(fā)的后端的tomcat服務(wù)器,weight表示轉(zhuǎn)發(fā)的權(quán)重,越大轉(zhuǎn)發(fā)的次數(shù)越多,機(jī)器性能不一樣配置的weight值不一樣 server 192.168.152.129:8080 weight=1 max_fails=2 fail_timeout=30s;server 192.168.152.129:8081 weight=1 max_fails=2 fail_timeout=30s; } upstream web2 {server 192.168.152.129:8090 weight=1 max_fails=2 fail_timeout=30s;server 192.168.152.129:8091 weight=1 max_fails=2 fail_timeout=30s; }server {listen 80; #監(jiān)聽80端口server_name www.dbspread.com; #域名#rewrite規(guī)則index index.jsp index.html index.htm;root /usr/local/nginx/html; #定義服務(wù)器的默認(rèn)網(wǎng)站根目錄位置#重定向if ($host != 'www.dbspread.com' ){ rewrite ^/(.*)$ http://www.dbspread.com/$1 permanent;}#防盜鏈location ~* \.(rmvb|jpg|png|swf|flv)$ { #rmvb|jpg|png|swf|flv表示對rmvb|jpg|png|swf|flv后綴的文件實(shí)行防盜鏈valid_referers none blocked www.dbspread.com; #表示對www.dbspread.com此域名開通白名單,比如在www.test.com的index.html引用download/av123.rmvb,無效root html/b;if ($invalid_referer) { #如果請求不是從www.dbspread.com白名單發(fā)出來的請求,直接重定向到403.html這個(gè)頁面或者返回403 #rewrite ^/ http://www.dbspread.com/403.html;return 403;}}#監(jiān)聽完成以后通過斜桿(/)攔截請求轉(zhuǎn)發(fā)到后端的tomcat服務(wù)器location / {#如果后端的服務(wù)器返回502、504、執(zhí)行超時(shí)等錯(cuò)誤,自動將請求轉(zhuǎn)發(fā)到upstream負(fù)載均衡池中的另一臺服務(wù)器,實(shí)現(xiàn)故障轉(zhuǎn)移。proxy_next_upstream http_502 http_504 error timeout invalid_header;proxy_set_header Host $host; #獲取客戶端的主機(jī)名存到變量Host里面,從而讓tomcat取到客戶端機(jī)器的信息proxy_set_header X-Real-IP $remote_addr; #獲取客戶端的主機(jī)名存到變量X-Real-IP里面,從而讓tomcat取到客戶端機(jī)器的信息proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;#rewrite ^/$ http://www.dbspread.com/new.index.html permanent;#用戶訪問www.dbspread.com,想直接跳轉(zhuǎn)到網(wǎng)站下面的某個(gè)頁面:www.dbspread.com/new.index.htmlproxy_pass http://web1; #跳轉(zhuǎn)到對應(yīng)的應(yīng)用web1}# location ~ .*\.(php|jsp|cgi|shtml)?$ #動態(tài)分離 ~匹配 以.*結(jié)尾(以PHP JSP結(jié)尾走這段)# {# proxy_set_header Host $host;# proxy_set_header X-Real-IP $remote_addr;# proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;# proxy_pass http://jvm_web2;# }#靜態(tài)分離 ~匹配 以.*結(jié)尾(以html|htm|gif|jpg|jpeg|bmp|png|ico|txt|js|css結(jié)尾走這段),當(dāng)然不是越久越好,如果有10000個(gè)用戶在線,都保存幾個(gè)月,系統(tǒng)托跨location ~ .*\.(html|htm|gif|jpg|jpeg|bmp|png|ico|txt|js|css)$ {root /var/local/static; #靜態(tài)資源存放在nginx的安裝機(jī)器上#proxy_pass http://www.static.com; #靜態(tài)資源也可存放在遠(yuǎn)程服務(wù)器上expires 30d;}#日志級別有[debug|info|notice|warn|error|crit] error_log 級別分為 debug, info, notice, warn, error, crit 默認(rèn)為crit, 生產(chǎn)環(huán)境用error #crit 記錄的日志最少,而debug記錄的日志最多access_log /usr/local/logs/web2/access.log main;error_log /usr/local/logs/web2/error.log crit;}}

?到這一步環(huán)境準(zhǔn)備已完成,相關(guān)的配置也修改完成,下面我們來查看效果

5.6 配置hosts域名映射

192.168.152.200? www.dbspread.com

注意:這里192.168.152.200 是keepalived里面virtual_ipaddress配置的虛擬ip

virtual_ipaddress {192.168.152.200 # 定義虛擬ip(VIP),可多設(shè),每行一個(gè)}

到這一步環(huán)境準(zhǔn)備已完成,相關(guān)的配置也修改完成,下面我們來查看效果

5.7 分別啟動192.168.152.129的兩個(gè)tomcat

5.8 分別啟動192.168.152.130(keepalived主節(jié)點(diǎn))和?192.168.152.129(keepalived從節(jié)點(diǎn))的keepalived的

?啟動命令:/usr/local/keepalived/sbin/keepalived

?

可以看到keepalived和nginx都啟動了

在瀏覽器輸入www.dpspread.com域名訪問

5.9 下面我們停掉主節(jié)點(diǎn)192.168.152.130的keepalived和nginx

?

可以看到從節(jié)點(diǎn)變?yōu)橹鞴?jié)點(diǎn)了

?在瀏覽器輸入地址www.dpspread.com訪問,可以看到訪問正常

5.10 下面我們重新啟動主節(jié)點(diǎn)192.168.152.130

?

可以看到主節(jié)點(diǎn)重新啟動以后變?yōu)橹鞴?jié)點(diǎn)了

之前變?yōu)橹鞴?jié)點(diǎn)的從節(jié)點(diǎn)又變回從節(jié)點(diǎn)了

到此keepalived+nginx的高可用完美完成,可以安安心心的睡個(gè)好覺了! Victory!!!!

?

轉(zhuǎn)載于:https://www.cnblogs.com/leeSmall/p/9356535.html

總結(jié)

以上是生活随笔為你收集整理的Nginx系列二:(Nginx Rewrite 规则、Nginx 防盗链、Nginx 动静分离、Nginx+keepalived 实现高可用)...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 成人亚洲玉足脚交系列 | 宅男av在线| 高清无打码 | 黄色一级免费观看 | 国产精品一区久久 | 日日干夜夜拍 | 亚洲午夜久久久久久久久久久 | 欧美综合在线一区 | 一区二区三区免费播放 | 欧美一级做a爰片免费视频 成人激情在线观看 | 亚洲精品乱码久久久久久不卡 | 激情婷婷小说 | 日日夜夜免费精品视频 | 可以看污的网站 | 天堂素人约啪 | www四虎| 中文字幕15页 | 男女污网站 | 九九热在线免费观看 | 精品爆乳一区二区三区 | 亚洲素人在线 | 小辣椒导航| 一级黄色片在线免费观看 | 国产卡一卡二卡三无线乱码新区 | 久久综合亚洲精品 | 玖玖精品| 日本中文在线播放 | 久久神马影院 | brazzers精品成人一区 | 特级毛片网站 | 成人tv | 一女双乳被两男吸视频 | 激情超碰| 国产精品h | 夫妻毛片 | 国产精品视频www | 欧美成年人视频在线观看 | 欧美偷拍一区二区三区 | 日韩www. | 国产日韩欧美一区二区东京热 | 性xxxx搡xxxxx搡欧美 | 欧美 日韩 国产 在线观看 | 一区二区日韩精品 | 久久精品国产久精国产 | 亚洲私人网站 | 一区亚洲| 中文字幕第11页 | 亚洲欧洲天堂 | 中国国产毛片 | 亚洲精品高清在线观看 | 成人资源在线 | 看黄色一级视频 | 欧美激情欧美激情在线五月 | 97人妻精品视频一区 | 曰批女人视频在线观看 | 午夜色综合 | 性xxx法国hd极品 | 强行糟蹋人妻hd中文 | 成人精品在线 | 国产亚洲精品久久久久久久久动漫 | 亚洲天堂欧美在线 | 久久99国产精品久久99果冻传媒 | 日本人体一区 | 原来神马电影免费高清完整版动漫 | 午夜日韩精品 | 亚洲精品尤物 | 久久国产这里只有精品 | 蜜桃精品久久久久久久免费影院 | 潘金莲一级淫片aaaaa武则天 | 人妻少妇精品视频一区二区三区 | 亚洲国产一二三区 | 花样视频污| 成人影| 欧美肉大捧一进一出免费视频 | 尤物视频在线观看 | 香蕉视频二区 | 人人妻人人爽一区二区三区 | 东京热无码av一区二区 | 最新av中文字幕 | 日韩一级色片 | 性久久久久久久久久 | 欧美成人午夜免费视在线看片 | 成人免费直播 | 亚洲五月花 | 国产新婚疯狂做爰视频 | 九九热视频在线观看 | 亚洲美女色 | 日本成人高清 | 国产精品欧美一区二区三区 | 欧美黄色a级片 | 亚洲污污视频 | 日本v片| 搡老熟女老女人一区二区 | 涩涩视频网站 | 在线视频在线观看 | 国产精品蜜 | 99热这里只有精品3 成年人黄色网址 | 超碰av在线| 午夜爽爽爽 |