? Nginx Proxy服務(wù)器
? ?1. 代理原理:正向代理與反向代理
? ? ? 舉一個(gè)簡(jiǎn)單的例子來(lái)說(shuō)明正代與反代:
? ? ? ?A:客戶(hù)端? ? ? ? ? ? ? ? ? ? B:代理? ? ? ? ? ? ?C:服務(wù)端
? ? ? ?A想要買(mǎi)一件產(chǎn)品雏胃,但是這個(gè)產(chǎn)品C有,A認(rèn)識(shí)C但是并不能直接聯(lián)系到C符糊,此時(shí)就出來(lái)了B,C認(rèn)識(shí)B使套,A也認(rèn)識(shí)B病往,所以? ? ? ? ? ? ? ? ? ? ?A就通過(guò)B把C的產(chǎn)品買(mǎi)了下來(lái),其實(shí)C不知道把產(chǎn)品賣(mài)給了A冤议,這就是正向代理
? ? ? A想要買(mǎi)一件產(chǎn)品斟薇,這個(gè)產(chǎn)品C有,但是A不認(rèn)識(shí)C不知道C有恕酸,只認(rèn)識(shí)B堪滨,A把請(qǐng)求發(fā)給B,B根據(jù)A的請(qǐng)求從C那里拿到產(chǎn)品? ? ? ? ? ? ? 然后返回給A蕊温,此時(shí)A并不知道自己買(mǎi)的產(chǎn)品是C的袱箱,這就是反向代理
? ? ?2.啟動(dòng)代理:
? ? ? 環(huán)境準(zhǔn)備:兩臺(tái)裝載nginx的服務(wù)器,都關(guān)閉防火墻和selinux
? ? ? nginx1:只是需要啟動(dòng)就可以了? #systemctl start nginx? ? ?
? ? ? nginx2:修改配置文件: #vi /etc/nginx/conf.d/default.conf:
? ? ? 在location標(biāo)簽里面添加如下內(nèi)容:
proxy_pass http://192.168.100.10:80;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?????????????????????????#真實(shí)服務(wù)器的IP地址
proxy_redirect default;???????????????????????????????????????????????????????????????????????????????#代理重定向
proxy_set_header Host $http_host;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? #代理設(shè)置頭部
proxy_set_header X-Real-IP $remote_addr;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? #客戶(hù)機(jī)IP
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;? ? ?#記錄代理地址
proxy_connect_timeout 30;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? #后端服務(wù)器連接的超時(shí)時(shí)間_發(fā)起三次握手等候響應(yīng)超時(shí)時(shí)間
proxy_send_timeout 60;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? #后端服務(wù)器數(shù)據(jù)回傳時(shí)間_就是在規(guī)定時(shí)間之內(nèi)后端服務(wù)器必須傳完所有的數(shù)據(jù)
proxy_read_timeout 60;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? #nginx接收upstream(上游/真實(shí)) server數(shù)據(jù)超時(shí), 默認(rèn)60s, 如果連續(xù)的60s內(nèi)沒(méi)有收到1個(gè)字節(jié), 連接關(guān)閉义矛。像長(zhǎng)連接
proxy_buffering on;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?#開(kāi)啟緩存
proxy_buffer_size 32k;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? #proxy_buffer_size只是響應(yīng)頭的緩沖區(qū)
proxy_buffers 4 128k;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? #內(nèi)容緩沖區(qū)域大小
proxy_busy_buffers_size 256k;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? #從proxy_buffers劃出一部分緩沖區(qū)來(lái)專(zhuān)門(mén)向客戶(hù)端傳送數(shù)據(jù)的地方
proxy_max_temp_file_size 256k;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? #超大的響應(yīng)頭存儲(chǔ)成文件发笔。
然后重啟服務(wù)訪問(wèn)代理地址:
會(huì)發(fā)現(xiàn)訪問(wèn)代理地址就會(huì)給我們轉(zhuǎn)發(fā)到真實(shí)的服務(wù)器上面去了。
3.Proxy緩存
緩存類(lèi)型:CDN緩存網(wǎng)頁(yè)緩存(公網(wǎng))? ? ?數(shù)據(jù)庫(kù)緩存 memcache redis? ? ? ? ?網(wǎng)頁(yè)緩存 nginx-proxy? ? ? ? 客戶(hù)端緩存? ?瀏覽器緩存
nginx proxy緩存模塊:ngx_http_proxy_module
緩存開(kāi)關(guān)
? ? #????Syntax: ? ? proxy_cache zone | off;
? ? #????Default: ? ? proxy_cache off;
? ? #????Context: http, server, location
代理緩存
? ? #????Syntax: proxy_cache_path path [levels=levels] keys_zone=name:size[inactive=time] [max_size=size]? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? #? ? [manager_files=number]
? ? #????Default:? —
? ? #????Context: http
? ? #????example:proxy_cache_path /data/nginx/cache levels=1:2 keys_zone=one:10m;
緩存維度
? ? #????Syntax: ? ? proxy_cache_key string;? 定義緩存唯一key,通過(guò)唯一key來(lái)進(jìn)行hash存取凉翻,緩存文件名
? ? #????Default: ? ? proxy_cache_key $scheme$proxy_host$request_uri;
? ? #????Context: http, server, location
緩存過(guò)期
? ? #????Syntax: ? ? proxy_cache_valid [code ...] time;
? ? #????Default: ? ? —
? ? #????Context: http, server, location
? ? #????proxy_cache_valid 200 302 10m;
? ? #????proxy_cache_valid 404? ? ? 1m;
清理Nginx緩存
1.rm 刪除已緩存的數(shù)據(jù)
#? ? ?rm - rf /cache/*
2.通過(guò)ngx_cache_purge 擴(kuò)展模塊清理了讨,需要編譯安裝nginx
? ? #????location ~ /purge(/.*) {
? ? #? ?allow? ? ? all;
? ? #? ? proxy_cache_purge proxy_cache $1$is_args$args;
? ? ?#? ? ? }
若有問(wèn)題咨詢(xún)歡迎大家聯(lián)系我:
郵箱:wangmouren_sir@163.com