nginx配置非剃、反向代理緩存置逻、負(fù)載均衡

一、nginx基本配置

nginx開啟文件目錄瀏覽功能(web上顯示目錄)

1location?/?{

2root?/data/www/file//指定實際目錄絕對路徑备绽;???

3autoindexon;//開啟目錄瀏覽功能券坞;???

4autoindex_exact_size?off;//關(guān)閉詳細(xì)文件大小統(tǒng)計,讓文件大小顯示MB肺素,GB單位恨锚,默認(rèn)為b;???

5autoindex_localtimeon;//開啟以服務(wù)器本地時區(qū)顯示文件修改日期倍靡!???

6}

php-fpm配置

1location~?\.php(.*)${

2fastcgi_pass127.0.0.1:9000;

3fastcgi_read_timeout7200;

4fastcgi_indexindex.php;

5fastcgi_split_path_info?^((?U).+\.php)(/?.+)$;

6fastcgi_paramSCRIPT_FILENAME$document_root$fastcgi_script_name;

7fastcgi_paramPATH_INFO$fastcgi_path_info;

8fastcgi_paramPATH_TRANSLATED$document_root$fastcgi_path_info;

9includefastcgi_params;

10}

靜態(tài)資源讀取

1location~?.*\.(js|css|ico|png|jpg|eot|svg|ttf|woff){

2#所有靜態(tài)文件直接讀取硬盤

3root/var/lib/tomcat7/webapps/JieLiERP/WEB-INF?;

4expires30d;#緩存30天

5}

gzip 壓縮

1gzipon;#是否開啟gzip

2gzip_buffers324k猴伶;#內(nèi)存中緩沖幾塊

3gzip_min_length1000;#最小壓縮長度

4gzip_comp_level6;#壓縮級別[1-9](級別越高壓縮的越小,但是越浪費(fèi)cpu)

5gzip_disable;#正則匹配UA什么樣的uri不進(jìn)行壓縮

6gzip_http_version1.1|2.0;?開始壓縮htpp協(xié)議版本

7gzip_proxied#設(shè)置請求者代理服務(wù)器,該如何緩存內(nèi)容?

8gzip_typestext/plain?application/xml;#對哪些類型的文件用壓縮(圖片他挎,mp3這類2進(jìn)制文件壓縮率不高沒必要壓縮)

9gzip_varyon|off#是否傳輸壓縮標(biāo)志

二筝尾、nginx配置https

1.激活所需要的網(wǎng)站的https獲取crt和key證書

2.在nginx配置文件中配置https證書

將http訪問域名重定向為https安全訪問

1server{

2listen80;

3server_namewww.shangbee.com?shangbee.com;

4#重定向shangbee.com到?www.shangbee.com

5#?if??(?$host?!=?'www.shangbee.com'??)??{

6#?rewrite?^/(.*)$?https://www.shangbee.com??permanent;

7#?}

8rewrite?^https://$http_host$request_uri?permanent;#強(qiáng)制將HTTP重定向到HTTPS???permanent永久重定向

9

10}

1server?{

2listen443ssl;

3ssl_certificate?/etc/nginx/ssl/nginx.crt;

4ssl_certificate_key?/etc/nginx/ssl/nginx.key;

5keepalive_timeout70;

6server_name?????www.shangbee.com;

7server_tokens?off;

8#add_header?Strict-Transport-Security?"max-age=31536000;?includeSubdomains";

9fastcgi_param???HTTPS???????????????on;

10fastcgi_param???HTTP_SCHEME?????????https;

11#access_log????/app/logs/nginx/mydomain_access.log;

12#error_log????/app/logs/nginx/mydomain_error.log;

13set????????$root????/data/htdocs/ether/public;

14location?~?.*\.(gif|jpg|jpeg|bmp|png|ico|txt|js|css)$

15{

16root?$root;

17}

18location?/?{

19root????$root;

20indexindex.html?index.php;

21if(?-f?$request_filename)?{

22break;

23}

24if(?!-e?$request_filename)?{

25rewrite?^(.*)$?/index.php/$1last;

26break;

27}

28}

29location?~?.+\.php($|/)?{

30fastcgi_pass????unix:/run/php/php7.0-fpm.sock;

31fastcgi_split_path_info?^((?U).+.php)(/

?.+)$;

32fastcgi_param?PATH_INFO?$fastcgi_path_info;

33fastcgi_param?PATH_TRANSLATED?$document_root$fastcgi_path_info;

34fastcgi_param????SCRIPT_FILENAME????$root$fastcgi_script_name;

35include????????fastcgi_params;

36}

37}

永久重定向與臨時重定向的區(qū)別

臨時重定向redirect,永久重定向permanent

301重定向是永久的重定向办桨,搜索引擎在抓取新內(nèi)容的同時也將舊的網(wǎng)址替換為重定向之后的網(wǎng)址筹淫。

302跳轉(zhuǎn)是暫時的跳轉(zhuǎn),搜索引擎會抓取新的內(nèi)容而保留舊的網(wǎng)址呢撞。因為服務(wù)器返回302代碼贸街,搜索引擎認(rèn)為新的網(wǎng)址只是暫時的。

實施301后狸相,新網(wǎng)址完全繼承舊網(wǎng)址,舊網(wǎng)址的排名等完全清零捐川。

實施302后脓鹃,對舊網(wǎng)址沒有影響,但新網(wǎng)址不會有排名古沥。

302每次用戶請求都會訪問一次服務(wù)器瘸右,并返回給用戶,301用戶請求后將永久重定向緩存岩齿,再次請求直接在本地重定向不會經(jīng)過服務(wù)器太颤。

三、負(fù)載均衡與反向代理

反向代理是負(fù)載均衡的一種方式

反向代理可以實現(xiàn)負(fù)載均衡 ?但是負(fù)載均衡不一定通過反向代理的方式來實現(xiàn)

反向代理也可以不做負(fù)載均衡 可以做客戶端與web服務(wù)器之間的緩存服務(wù)器

squid varnish這些反向代理一般做緩存

nginx反向代理一般做負(fù)載均衡

負(fù)載均衡也可以通過LVS非反向代理的方式來實現(xiàn) 通過ip和端口實現(xiàn)負(fù)載均衡

NGINX反向代理緩存

反向代理(Reverse Proxy)方式是指以代理服務(wù)器來接受internet上的連接請求盹沈,然后將請求轉(zhuǎn)發(fā)給內(nèi)部網(wǎng)絡(luò)上的服務(wù)器龄章,并將從服務(wù)器上得到的結(jié)果返回給internet上請求連接的客戶端,此時代理服務(wù)器對外就表現(xiàn)為一個服務(wù)器乞封。

反向代理的作用

①保護(hù)網(wǎng)站安全:任何來自Internet的請求都必須先經(jīng)過代理服務(wù)器做裙。

簡單來說,就是我們網(wǎng)站的所有的請求都要經(jīng)過反向代理服務(wù)器肃晚,對反向代理服務(wù)器進(jìn)行安全加固就能解決很大一部分的安全問題锚贱。

②通過配置緩存功能加速Web請求:可以緩存真實Web服務(wù)器上的某些靜態(tài)資源,減輕真實Web服務(wù)器的負(fù)載壓力关串;

可以在反向代理的服務(wù)器上緩存某些靜態(tài)資源拧廊,這樣的話在反向代理服務(wù)器上存在的資源就不用去web服務(wù)器上獲取,以減輕web服務(wù)器的壓力晋修。

③實現(xiàn)負(fù)載均衡:充當(dāng)負(fù)載均衡服務(wù)器均衡地分發(fā)請求吧碾,平衡集群中各個服務(wù)器的負(fù)載壓力;

可以通過反向代理服務(wù)器把請求分發(fā)到不同服務(wù)器飞蚓,減輕服務(wù)器的壓力滤港,還能防止網(wǎng)站某一臺服務(wù)器掛掉之后,網(wǎng)站就無法訪問的問題,做到網(wǎng)站的高可用溅漾,減少事故的發(fā)生山叮。

反向代理緩存設(shè)置

一、在反向代理服務(wù)器的配置文件中加入:

位置:

http段內(nèi)

1proxy_temp_path?/data/nginx-temp;#緩存臨時文件路徑

2proxy_cache_path?/data/nginx-cachelevels=1:2keys_zone=nginx-cache:20m

3max_size=50m?inactive=1m;#緩存保存的路徑

levels指定該緩存空間有兩層hash目錄添履,第一層目錄為1個數(shù)字或者字母屁倔,第二層為2個數(shù)字或者字母

keys_zone指的是緩存空間名稱。 20m 為內(nèi)存緩存空間大小

max_size指的是緩存文件可以占用的最大空間暮胧。

inactive指的是如果一個緩存文件多長時間不被訪問锐借,就會被刪除。(天:d往衷、秒:s钞翔、分:m)

?配置的demo

//設(shè)置動態(tài)服務(wù)器的代理 【處理PHP任務(wù)】

1upstreamtest?{

2#ip_hash;????#[?使用ip_hash分發(fā)?]

3server192.168.1.254:81weight=2;#[?設(shè)置這個服務(wù)器的權(quán)重為2?]

4server192.168.1.254:82;

5}

//設(shè)置獲取靜態(tài)文件的代理

1upstreamstatic{

2server192.168.1.254:81;#[?靜態(tài)服務(wù)器?]

3}

設(shè)置緩存目錄

1proxy_temp_path?/data/nginx-temp;#[temp的目錄]

2proxy_cache_path?/data/nginx-cachelevels=1:2keys_zone=nginx-cache:20m?max_size=50m?inactive=1m;

[ 設(shè)置緩存的路徑為 /data/nginx-cache 層級為2級,第一級為1個字幕第二個為2個字母 緩存的空間名為 nginx-cache席舍,緩存的內(nèi)存空間為20M 最大空間為50M 1分鐘內(nèi)沒有訪問刪除這個緩存 ?]

END

1server{

2listen80;

3server_name_;

4access_loglogs/likang.default.access.log??main;

5error_loglogs/error.logerror;

6root/var/www/html/likang/default;

設(shè)置反向代理

1location/{

2proxy_passhttp://test;

3proxy_set_headerHost$host;

4proxy_set_headerX-Real-IP$remote_addr;

5proxy_set_headerX-Forwarded-For$proxy_add_x_forwarded_for;

6}

設(shè)置靜態(tài)圖片

1location~.*\.(gif|jpg|png|htm|html|css|js|flv|ico|swf)(.*)?{

2#root?/data/nginx-cache;??#[?圖片的根目錄?]

3proxy_redirectoff;#[關(guān)閉跳轉(zhuǎn)]

4proxy_set_headerHost$host;#[?設(shè)置header?]

5proxy_cachenginx-cache;#[?緩存的空間?--?上邊定義的??]

6proxy_cache_valid2003021h;#[?不同http狀態(tài)緩存時間不同?]

7proxy_cache_valid3011d;

8proxy_cache_validany1m;

9proxy_ignore_headersSet-Cookie?Cache-Control;

10proxy_hide_headerCache-Control;

11proxy_hide_headerSet-Cookie;

12expires30d;#[告訴瀏覽器緩存有效期?--?30天內(nèi)可以直接訪問瀏覽器緩存?]

13proxy_passhttp://static;#[文件不存在去那里獲取]

14}

15}

解決不緩存的問題:

nginx不緩存原因

默認(rèn)情況下布轿,nginx是否緩存是由nginx緩存服務(wù)器與源服務(wù)器共同決定的, 緩存服務(wù)器需要嚴(yán)格遵守源服務(wù)器響應(yīng)的header來決定是否緩存以及緩存的時常。header主要有如下:

Cache-control:no-cache来颤、no-store

如果出現(xiàn)這兩值汰扭,nginx緩存服務(wù)器是絕對不會緩存的

Expires:1980-01-01

如果出現(xiàn)日期比當(dāng)前時間早,也不會緩存福铅。

解決不緩存方案

2.1 方法一:

修改程序或者源服務(wù)器web程序響應(yīng)的header

2.2 方法二:

nginx代理直接加上如下一句:

1proxy_ignore_headers?X-Accel-Expires?ExpiresCache-ControlSet-Cookie;

或者:

1proxy_ignore_headersSet-CookieCache-Control;

2proxy_hide_headerCache-Control;

3proxy_hide_headerSet-Cookie;

擴(kuò)展:學(xué)習(xí)nginx的Proxy Cache指令

1 proxy_cache

語法:proxy_cache zone_name;

默認(rèn)值:None

使用字段:http, server, location

設(shè)置一個緩存區(qū)域的名稱萝毛,一個相同的區(qū)域可以在不同的地方使用。

在0.7.48后滑黔,緩存遵循后端的”Expires”, “Cache-Control: no-cache”, “Cache-Control: max-age=XXX”以及其他等笆包。然而,目前nginx會忽略一些緩存控制指令略荡,如:”private”和”no-store”色查,同樣,nginx在緩存過程中不會處理”Vary”頭撞芍,為了確保一些私有數(shù)據(jù)不被所有的用戶看到秧了,后端必須設(shè)置 “no-cache”或者”max-age=0″頭,或者proxy_cache_key包含用戶指定的數(shù)據(jù)如

2 proxy_cache_key

語法:proxy_cache_key line;

默認(rèn)值:httpcookiexxx序无,在proxycachekey中使用一部分cookie的值可以防止緩存私有數(shù)據(jù)验毡,所以可以分別指定location以便分開私有數(shù)據(jù)和公有數(shù)據(jù)。緩存指令依賴代理緩沖區(qū)(buffers)帝嗡,如果proxybuffers設(shè)置為off晶通,緩存不會生效∮寸瑁¨K40K語法:¨C2C默認(rèn)值:schemeproxyostrequest_uri;

使用字段:http, server, location

指令指定了包含在緩存中的緩存關(guān)鍵字狮辽。

復(fù)制代碼 代碼如下:

1proxy_cache_key"$host$request_uri$cookie_user";

2

3proxy_cache_key"$scheme$host$request_uri";

3 proxy_cache_path

語法:proxy_cache_path path [levels=number] keys_zone=zone_name:zone_size [inactive=time] [max_size=size];

默認(rèn)值:None

使用字段:http

指令指定緩存的路徑和一些其他參數(shù)一也,緩存的數(shù)據(jù)存儲在文件中。緩存的文件名和key為代理URL的MD5 碼喉脖。levels參數(shù)指定緩存的子目錄數(shù)椰苟,例如:

proxy_cache_path /data/nginx/cache levels=1:2 keys_zone=one:10m;

文件名類似于:

/data/nginx/cache/c/29/b7f54b2df7773722d382f4809d65029c

所有活動的key和元數(shù)據(jù)存儲在共享的內(nèi)存區(qū)域中,這個區(qū)域用keys_zone參數(shù)指定树叽,如果在inactive參數(shù)指定的時間內(nèi)緩存的數(shù)據(jù)沒有被請求則被刪除舆蝴,默認(rèn)inactive為10分鐘。

cache manager進(jìn)程控制磁盤的緩存大小题诵,在max_size參數(shù)中定義洁仗,超過其大小后最少使用數(shù)據(jù)將被刪除。

區(qū)域的大小按照緩存頁面數(shù)的比例進(jìn)行設(shè)置性锭,一個頁面(文件)的元數(shù)據(jù)大小按照操作系統(tǒng)來定赠潦,F(xiàn)reeBSD/i386下為64字節(jié),F(xiàn)reeBSD/amd64下為128字節(jié)草冈,當(dāng)區(qū)域滿了以后key將按照LRU(最近最少使用算法)進(jìn)行處理祭椰。

proxy_cache_path和proxy_temp_path應(yīng)該使用在相同的文件系統(tǒng)上。

4 proxy_cache_methods

語法:proxy_cache_methods [GET HEAD POST];

默認(rèn)值:proxy_cache_methods GET HEAD;

使用字段:http, server, location

GET/HEAD用來裝飾語句疲陕,即你無法禁用GET/HEAD即使你只使用下列語句設(shè)置:

proxy_cache_methods POST;

5 proxy_cache_min_uses

語法:proxy_cache_min_uses the_number;

默認(rèn)值:proxy_cache_min_uses 1;

使用字段:http, server, location

多少次的查詢后應(yīng)答將被緩存,默認(rèn)1钉赁。

6 proxy_cache_valid

語法:proxy_cache_valid reply_code [reply_code ...] time;

默認(rèn)值:None

使用字段:http, server, location

為不同的應(yīng)答設(shè)置不同的緩存時間蹄殃,例如:

復(fù)制代碼 代碼如下:

1proxy_cache_valid20030210m;

2proxy_cache_valid4041m;

3proxy_cache_valid5m;

4proxy_cache_valid20030210m;

5proxy_cache_valid3011h;

6proxy_cache_validany1m;

7 proxy_cache_use_stale

為了防止緩存失效(在多個線程同時更新本地緩存時),你可以指定’updating’參數(shù)你踩,它將保證只有一個線程去更新緩存诅岩,并且在這個線程更新緩存的過程中其他的線程只會響應(yīng)當(dāng)前緩存中的過期版本。

代碼及configure配置:

在ngx_http_proxy_module.c里面定義了每個指令的鉤子(即callback)带膜,它們在讀取配置文件時會被調(diào)用吩谦。在configure的時候只需要把“HTTP_CACHE”設(shè)置為YES(可以找到auto/options里面HTTP_CACHE那行)∠ヅ海“proxy_cache_purge”指令需要下載nginx add-ons里面的“Cache Purge”模塊式廷,并在configure的時候用"--add-module="來加載代碼。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末芭挽,一起剝皮案震驚了整個濱河市滑废,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌袜爪,老刑警劉巖蠕趁,帶你破解...
    沈念sama閱讀 218,858評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異辛馆,居然都是意外死亡俺陋,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,372評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來腊状,“玉大人诱咏,你說我怎么就攤上這事∈僮茫” “怎么了胰苏?”我有些...
    開封第一講書人閱讀 165,282評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長醇疼。 經(jīng)常有香客問我硕并,道長,這世上最難降的妖魔是什么秧荆? 我笑而不...
    開封第一講書人閱讀 58,842評論 1 295
  • 正文 為了忘掉前任倔毙,我火速辦了婚禮,結(jié)果婚禮上乙濒,老公的妹妹穿的比我還像新娘陕赃。我一直安慰自己,他們只是感情好颁股,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,857評論 6 392
  • 文/花漫 我一把揭開白布么库。 她就那樣靜靜地躺著,像睡著了一般甘有。 火紅的嫁衣襯著肌膚如雪诉儒。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,679評論 1 305
  • 那天亏掀,我揣著相機(jī)與錄音忱反,去河邊找鬼。 笑死滤愕,一個胖子當(dāng)著我的面吹牛温算,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播间影,決...
    沈念sama閱讀 40,406評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼注竿,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了魂贬?” 一聲冷哼從身側(cè)響起蔓搞,我...
    開封第一講書人閱讀 39,311評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎随橘,沒想到半個月后喂分,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,767評論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡机蔗,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年蒲祈,在試婚紗的時候發(fā)現(xiàn)自己被綠了甘萧。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,090評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡梆掸,死狀恐怖扬卷,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情酸钦,我是刑警寧澤怪得,帶...
    沈念sama閱讀 35,785評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站卑硫,受9級特大地震影響徒恋,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜欢伏,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,420評論 3 331
  • 文/蒙蒙 一入挣、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧硝拧,春花似錦径筏、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,988評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至抱究,卻和暖如春恢氯,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背媳维。 一陣腳步聲響...
    開封第一講書人閱讀 33,101評論 1 271
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留遏暴,地道東北人侄刽。 一個月前我還...
    沈念sama閱讀 48,298評論 3 372
  • 正文 我出身青樓,卻偏偏與公主長得像朋凉,于是被迫代替她去往敵國和親州丹。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,033評論 2 355

推薦閱讀更多精彩內(nèi)容