一臺(tái)nginx服務(wù)器 192.168.80.100
兩臺(tái)web服務(wù)器 192.168.80.101,192.168.80.102
首先關(guān)閉防火墻
systemctl stop firewalld
setenforce 0
注:可以寫(xiě)防火墻規(guī)則
需要一下幾個(gè)包
nginx-1.13.5.tar //nginx包
ngx_cache_purge-2.3.tar //清理緩存用的包
pcre-8.41.tar //pcre 依賴(lài)包
解壓包到/opt/下
tar xf ngx_cache_purge-2.0.tar.gz -C /opt/ //解壓軟件包
tar xf pcre-8.31.tar.bz2 -C /opt/
tar xf nginx-1.13.5.tar.gz -C /opt/
安裝插件
yum install -y zlib-devel
編譯環(huán)境
yum install -y gcc gcc-c++ make
編譯并安裝
cd /opt/nginx-1.13.5/
定制功能:
./configure
–prefix=/usr/local/nginx
–user=nginx
–group=nginx
–with-http_stub_status_module
–with-pcre=/opt/pcre-8.41
–add-module=/opt/ngx_cache_purge-2.3
編譯并安裝:
make && make install
修改配置文件
vi /usr/local/nginx/conf/nginx.conf
use epoll //新增 ,事件驅(qū)動(dòng)模型
charset utf-8 //添加一個(gè)字符編碼
以上去掉#號(hào)
在http{
keepalive_timeout 65;
}
keepalive_timeout 65; //在當(dāng)前行下面新增,連接超時(shí)時(shí)間
tcp_nodelay on;
client_body_buffer_size 512k;
proxy_connect_timeout 5; #跟后端服務(wù)器連接超時(shí)時(shí)間,發(fā)起握手等候響應(yīng)時(shí)間
proxy_read_timeout 60; #連接成功后等待后端服務(wù)器的響應(yīng)時(shí)間,已經(jīng)進(jìn)入后端的排隊(duì)之中等候處理
proxy_send_timeout 5; #后端服務(wù)器回傳時(shí)間,就是在規(guī)定時(shí)間內(nèi)后端服務(wù)器必須傳完所有數(shù)據(jù)
proxy_buffer_size 16k; #代理請(qǐng)求緩沖區(qū),會(huì)保存用戶(hù)的頭信息以供nginx進(jìn)行處理
proxy_buffers 4 64k; #nginx保存單個(gè)用幾個(gè)buffer最大用多少空間
proxy_busy_buffers_size 128k; #系統(tǒng)很忙時(shí)候可以申請(qǐng)最大的proxy_buffers
proxy_temp_file_write_size 128k; #proxy緩存臨時(shí)文件的大小
#以下兩行是開(kāi)啟nginx緩存功能的配置:
proxy_temp_path /var/cache/nginx/cache_temp;
#創(chuàng)建緩存的時(shí)候可能生成一些臨時(shí)文件存放的位置,自動(dòng)創(chuàng)建
proxy_cache_path /var/cache/nginx/proxy_cache levels=1:2 keys_zone=cache_one:200m inactive=1d max_size=30g;
#定義緩存存儲(chǔ)目錄;緩存級(jí)別,子目錄級(jí)別,表示緩存目錄的一級(jí)子目錄是1個(gè)字符,二級(jí)子目錄是2個(gè)字符;建立共享緩存,緩存數(shù)據(jù)元數(shù)據(jù)的空間,查緩存時(shí),先從此空間查找,然后到相應(yīng)目錄中查找;緩存的時(shí)間;緩存空間大小
upstream backend_server{
server 192.168.80.185:80 weight=1 max_fails=2 fail_timeout=30s;
} 加權(quán)輪詢(xún)
server_name test 192.168.80.182; //修改
index index.html index.htm; //從location處移動(dòng)過(guò)來(lái)
location / {
proxy_next_upstream http_502 http_504 error timeout invalid_header; #出現(xiàn)502-504或錯(cuò)誤,會(huì)跳過(guò)此臺(tái)服務(wù)器訪問(wèn)下一臺(tái)服務(wù)器
proxy_cache cache_one; #啟用名為cache_one緩存
proxy_cache_valid 200 304 12h; #狀態(tài)碼,有效時(shí)間12小時(shí),其余狀態(tài)碼10分鐘過(guò)期
proxy_cache_key $host$uri$is_args$args; #緩存key,通過(guò)唯一key來(lái)進(jìn)行hash存取
proxy_set_header Host $host; #增加頭部信息,方便觀察客戶(hù)端respoce是否命中
proxy_set_header X-Forwarded-For $remote_addr; #后端節(jié)點(diǎn)機(jī)器獲取客戶(hù)端真實(shí)ip,$remote_addr代表客戶(hù)端的ip地址,
proxy_pass http://backend_server; 請(qǐng)求轉(zhuǎn)向
expires 1d;
}
access_log off;
}
}
創(chuàng)建緩存目錄
mkdir -p /var/cache/nginx/cache_temp
創(chuàng)建代理目錄
mkdir /var/cache/nginx/proxy_cache
軟連接到$PATH環(huán)境變量中,方便系統(tǒng)識(shí)別
ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/
創(chuàng)建一個(gè)程序用戶(hù)
useradd -M -s /sbin/nologin nginx
檢查nginx語(yǔ)法錯(cuò)誤
nginx -t
啟動(dòng)nginx服務(wù)
nginx
查看ngnx是否啟動(dòng)
netstat -anpt | grep nginx
在web服務(wù)器上分別搭建一個(gè)httpd并能夠訪問(wèn)到網(wǎng)頁(yè)
在windows瀏覽器上輸入192.168.80.100
測(cè)試命中:
重新啟動(dòng)
pkill -9 nginx
nginx
測(cè)試
curl -I 192.168.80.100
清除緩存:
方法一:rm刪除已緩存的數(shù)據(jù)
rm -rf /var/cache/nginx/cache_temp/
rm -rf /var/cache/nginx/proxy_cache/
方法二:通過(guò)ngx_cache_purge擴(kuò)展模塊清理,需要編譯安裝
在server{}添加如下:
location ~/purge(/.*) {
allow 127.0.0.1;
allow 192.168.80.0/24;
deny all;
proxy_cache_purge cache_one $host$1$is_args$args;
}
location ~.(php|jsp|cgi)$ {
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_pass http://backend_server;
}
重啟nginx
pkill -9 nginx
nginx
清除緩存
http://192.168.80.182/purge/