卖逼视频免费看片|狼人就干网中文字慕|成人av影院导航|人妻少妇精品无码专区二区妖婧|亚洲丝袜视频玖玖|一区二区免费中文|日本高清无码一区|国产91无码小说|国产黄片子视频91sese日韩|免费高清无码成人网站入口

網(wǎng)上整理的關(guān)于Nginx 學(xué)習(xí)材料 2

一 Nginx 簡(jiǎn)單的負(fù)載均衡配置示例[原創(chuàng)](鏈接地址:http://zyan.cc/post/306/)www.zyan.cc 和 blog.zyan.cc 域名均指向 Nginx 所在的服務(wù)器I

一 Nginx 簡(jiǎn)單的負(fù)載均衡配置示例[原創(chuàng)]

(鏈接地址:http://zyan.cc/post/306/)

www.zyan.cc 和 blog.zyan.cc 域名均指向 Nginx 所在的服務(wù)器IP 。

用戶訪問(wèn)http://www.zyan.cc,將其負(fù)載均衡到192.168.1.2:80、192.168.1.3:80、192.168.1.4:80、192.168.1.5:80四臺(tái)服務(wù)器。

用戶訪問(wèn)http://blog.zyan.cc,將其負(fù)載均衡到192.168.1.7服務(wù)器的8080、8081、8082端口。

以下為配置文件nginx.conf :(windows 中配置參數(shù)有點(diǎn)不同,測(cè)試過(guò)的) user www www;

worker_processes 10;

#error_log logs/error.log;

#error_log logs/error.log notice;

#error_log logs/error.log info;

#pid logs/nginx.pid;

#最大文件描述符

worker_rlimit_nofile 51200;

events

{

use epoll;

worker_connections 51200;

}

{

include conf/mime.types;

default_type application/octet-stream;

keepalive_timeout 120;

tcp_nodelay on;

upstream www.zyan.cc {

1 / 93

,

server 192.168.1.2:80;

server 192.168.1.3:80;

server 192.168.1.4:80;

server 192.168.1.5:80;

}

upstream blog.zyan.cc {

server 192.168.1.7:8080;

server 192.168.1.7:8081;

server 192.168.1.7:8082;

}

server

{

listen 80;

server_name www.zyan.cc;

location / {

proxy_pass http://www.zyan.cc;

proxy_set_header Host $host;

proxy_set_header X-Real-IP $remote_addr;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; }

log_format www_s135_com '$remote_addr - $remote_user [$time_local] $request ' '"$status" $body_bytes_sent "$http_referer" '

'"$http_user_agent" "$http_x_forwarded_for"';

access_log /data1/logs/www.log www_s135_com;

}

server

{

listen 80;

server_name blog.zyan.cc;

location / {

2 / 93

,

proxy_pass http://blog.zyan.cc;

proxy_set_header Host $host;

proxy_set_header X-Real-IP $remote_addr;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

}

log_format blog_s135_com '$remote_addr - $remote_user [$time_local] $request ' '"$status" $body_bytes_sent "$http_referer" '

'"$http_user_agent" "$http_x_forwarded_for"';

access_log /data1/logs/blog.log blog_s135_com;

}

}

附:Nginx 的安裝方法可參照《Nginx 0.5.31 PHP 5.2.4(FastCGI )搭建可承受3萬(wàn)以上并發(fā)連接數(shù),勝過(guò)Apache 10倍的Web 服務(wù)器》文章的以下段落(僅做負(fù)載均衡,無(wú)需支持PHP 的安裝方法):

二、安裝PHP 5.2.4(FastCGI 模式)

4、創(chuàng)建www 用戶和組,以及其使用的目錄:

三、安裝Nginx 0.5.31

1、安裝Nginx 所需的pcre 庫(kù):

2、安裝Nginx

3、創(chuàng)建Nginx 日志目錄

5、啟動(dòng)Nginx

問(wèn)答:

1. 如果負(fù)載均衡后面的機(jī)器都是要用到session 的話,如何很好的解決這個(gè)問(wèn)題呢?

2. 有沒(méi)有類似的負(fù)載均衡功能? 另外還有一個(gè)疑問(wèn):

客戶端直接訪問(wèn)web 服務(wù)器時(shí),可以用HTTP_CLIENT_IP、REMOTE_ADDR 這幾個(gè)變量看到客戶端的IP ,經(jīng)過(guò)squid 或者ngrnx 之后,還能看到客戶端的IP 嗎? 是不是要用HTTP_X_FORWARDED_FOR

—BIG-IP 就是用來(lái)做負(fù)載均衡的。經(jīng)過(guò)squid 或者ngrnx 之后,看到客戶端的IP ,請(qǐng)用HTTP_X_FORWARDED_FOR

3 / 93

,

3.A. 如果均衡的域名中有泛域名,或有幾百個(gè)域名的話可以配置嗎?

B.ngnix 在做均衡的時(shí)候是否已經(jīng)包含了cache 功能?

C.ngnix---squid----apache 取的的HTTP_X_FORWARDED_FOR是squid 服務(wù)器的ip 地址,如果想取真實(shí)客戶端地址可以做到嗎?

回復(fù):(1)nginx.conf

server_name .s135.com; 即可支持***.s135.com泛域名

(2)nginx負(fù)載均衡只做反向代理,有簡(jiǎn)單的緩沖,但不像Squid 那樣將cache 存在本機(jī)。

(3)我已經(jīng)在nginx.conf 配置文件中增加:

proxy_set_header Host $host;

proxy_set_header X-Real-IP $remote_addr;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

編譯squid 時(shí)加上--enable-follow-x-forwarded-for

然后在squid.conf 中輸入一行:

follow_x_forwarded_for allow all

后端的Apache 取日志(httpd.conf ):

LogFormat "{X-Forwarded-For}i l u t "r" >s b "{Referer}i" "{User-Agent}i" h T" combined

取到的就是用戶真實(shí)IP

4. 這個(gè)軟件是不錯(cuò),但是有一個(gè)硬傷,做負(fù)載均衡時(shí),好像無(wú)法檢測(cè)節(jié)點(diǎn)健康狀態(tài)?

5.follow_x_forwarded_for allow all 全開(kāi)是不是會(huì)引起安全問(wèn)題?

6. 請(qǐng)問(wèn),NGINX 是不是基于域名的負(fù)載均衡 能不能基于IP 做負(fù)載均衡

7. 請(qǐng)問(wèn):

proxy_set_header Host $host;

proxy_set_header X-Real-IP $remote_addr;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

4 / 93

,

請(qǐng)問(wèn)這三個(gè)是什么意思啊?

8. 有請(qǐng)張兄指教:

server1與server2都安裝web.

為了省下一臺(tái)主機(jī). 在server1上安裝nginx, 做反向代理, 輪循到server1, server2的web 上實(shí)現(xiàn)負(fù)載均衡.

請(qǐng)問(wèn)這樣做與單獨(dú)使用一臺(tái)server3做負(fù)載均衡器的區(qū)別是不是非常大?

9. 我想問(wèn)下,轉(zhuǎn)發(fā)到后端那幾臺(tái)服務(wù)器,程序怎么同步?假如PHP 呢?做負(fù)載均衡時(shí),好像無(wú)法檢測(cè)節(jié)點(diǎn)健康狀態(tài)?想問(wèn)一下,為什么本機(jī)不能也接受訪問(wèn)呢? 例如:a 、b 、c 三臺(tái)機(jī)器,我在a 上面如同上面配置的,為什么訪問(wèn)總是在b 、c 來(lái)回?fù)Q,為什么a 上也有網(wǎng)站卻不被訪問(wèn)到呢?如果我也想訪問(wèn)a 服務(wù)器上的網(wǎng)站需要如何處理?

10. 誠(chéng)心請(qǐng)教,在php-fpm 模式下,

可以做一組

upstream blog.s135.com {

server 192.168.1.7:8080;

server 192.168.1.7:8081;

server 192.168.1.7:8082;

}

負(fù)載均衡么?

我查閱了一些資料,好像php-fpm 同時(shí)只能打開(kāi)一個(gè)端口,如果想實(shí)現(xiàn)可行么?

11. 誠(chéng)心請(qǐng)教,在php-fpm 模式下,

可以做一組

upstream blog.s135.com {

server 192.168.1.7:8080;

server 192.168.1.7:8081;

server 192.168.1.7:8082;

}

負(fù)載均衡么?

我查閱了一些資料,好像php-fpm 同時(shí)只能打開(kāi)一個(gè)端口,如果想實(shí)現(xiàn)可行么?

12.include conf/mime.types;

5 / 93

,

引用mime.types 文件的路勁前面應(yīng)該不用加conf/,指定的類型文件應(yīng)該自動(dòng)會(huì)到conf 目錄中去找

13. 請(qǐng)教一下,經(jīng)過(guò)Nginx 轉(zhuǎn)發(fā)后,是不是會(huì)轉(zhuǎn)Http1.1損失為Http1.0?請(qǐng)教一下,經(jīng)過(guò)Nginx 轉(zhuǎn)發(fā)后,是不是會(huì)轉(zhuǎn)Http1.1損失為Http1.0?

14. 安裝php 必須要用fastcgi 模式嗎?我用的是fpm 的,但發(fā)現(xiàn)做負(fù)載均衡的時(shí)候發(fā)現(xiàn)訪問(wèn)/message/目錄下的php 文件的時(shí)候總是失效,系統(tǒng)自動(dòng)在/下面去訪問(wèn)了,不知是什么原因的?

解答:解決了, 剛開(kāi)始準(zhǔn)備將負(fù)載均衡器也做為web 使用, 啟用了以下代碼 ,將這幾行刪除即可。

location ~ .php$ {

root html;

fastcgi_pass 127.0.0.1:9000;

fastcgi_index index.php;

fastcgi_param SCRIPT_FILENAME /usr/local/nginx/html$fastcgi_script_name; include fastcgi_params;

}

6 / 93

,

二 nginx upstream的分配方式

(鏈接地址:http://onlyzq.blog.51cto.com/1228/557848/)

1、輪詢(默認(rèn))

每個(gè)請(qǐng)求按時(shí)間順序逐一分配到不同的后端服務(wù)器,如果后端服務(wù)器down 掉,能自動(dòng)剔除。

2、weight

指定輪詢幾率,weight 和訪問(wèn)比率成正比,用于后端服務(wù)器性能不均的情況。 例如:

upstream bakend {

server 192.168.159.10 weight=10;

server 192.168.159.11 weight=10;

}

3、ip_hash

每個(gè)請(qǐng)求按訪問(wèn)ip 的hash 結(jié)果分配,這樣每個(gè)訪客固定訪問(wèn)一個(gè)后端服務(wù)器,可以解決session 的問(wèn)題。

例如:

upstream resinserver{

ip_hash;

server 192.168.159.10:8080;

server 192.168.159.11:8080;

}

4、fair (第三方)

按后端服務(wù)器的響應(yīng)時(shí)間來(lái)分配請(qǐng)求,響應(yīng)時(shí)間短的優(yōu)先分配。

upstream resinserver{

server server1;

server server2;

fair;

}

5、url_hash(第三方)

按訪問(wèn)url 的hash 結(jié)果來(lái)分配請(qǐng)求,使每個(gè)url 定向到同一個(gè)后端服務(wù)器,后端服務(wù)器為緩存時(shí)比較有效。

例:在upstream 中加入hash 語(yǔ)句,server 語(yǔ)句中不能寫(xiě)入weight 等其他的參數(shù),hash_method是使用的hash 算法

upstream resinserver{

server squid1:3128;

server squid2:3128;

hash $request_uri;

hash_method crc32;

7 / 93

,

}

tips:

upstream resinserver{#定義負(fù)載均衡設(shè)備的Ip 及設(shè)備狀態(tài)

ip_hash;

server 127.0.0.1:8000 down;

server 127.0.0.1:8080 weight=2;

server 127.0.0.1:6801;

server 127.0.0.1:6802 backup;

}

在需要使用負(fù)載均衡的server 中增加

proxy_pass http://resinserver/;

每個(gè)設(shè)備的狀態(tài)設(shè)置為:

1.down 表示單前的server 暫時(shí)不參與負(fù)載

2.weight 默認(rèn)為1.weight 越大,負(fù)載的權(quán)重就越大。

3.max_fails :允許請(qǐng)求失敗的次數(shù)默認(rèn)為1. 當(dāng)超過(guò)最大次數(shù)時(shí),返回proxy_next_upstream 模塊定義的錯(cuò)誤

4.fail_timeout:max_fails次失敗后,暫停的時(shí)間。

5.backup : 其它所有的非backup 機(jī)器down 或者忙的時(shí)候,請(qǐng)求backup 機(jī)器。所以這臺(tái)機(jī)器壓力會(huì)最輕。

nginx 支持同時(shí)設(shè)置多組的負(fù)載均衡,用來(lái)給不用的server 來(lái)使用。

client_body_in_file_only 設(shè)置為On 可以講client post過(guò)來(lái)的數(shù)據(jù)記錄到文件中用來(lái)做debug client_body_temp_path 設(shè)置記錄文件的目錄 可以設(shè)置最多3層目錄

location 對(duì)URL 進(jìn)行匹配. 可以進(jìn)行重定向或者進(jìn)行新的代理 負(fù)載均衡

8 / 93

,

三 關(guān)于Nginx 的server_name

(鏈接地址:http://onlyzq.blog.51cto.com/1228/535279)

Nginx 中的server_name指令主要用于配置基于名稱的虛擬主機(jī),server_name指令在接到請(qǐng)求后的匹配順序分別為:

1、準(zhǔn)確的server_name匹配,例如:

server {

listen 80;

server_name domain.com www.domain.com;

...

}

2、以*通配符開(kāi)始的字符串:

server {

listen 80;

server_name *.domain.com;

...

}

3、以*通配符結(jié)束的字符串:

server {

listen 80;

server_name www.*;

...

}

4、匹配正則表達(dá)式:

server {

listen 80;

9 / 93

,

server_name ~^(?. ).domain.com$;

...

}

nginx 將按照1,2,3,4的順序?qū)erver name 進(jìn)行匹配,只有有一項(xiàng)匹配以后就會(huì)停止搜索,所以我們?cè)谑褂眠@個(gè)指令的時(shí)候一定要分清楚它的匹配順序(類似于location 指令)。

server_name指令一項(xiàng)很實(shí)用的功能便是可以在使用正則表達(dá)式的捕獲功能,這樣可以盡量精簡(jiǎn)配置文件,畢竟太長(zhǎng)的配置文件日常維護(hù)也很不方便。下面是2個(gè)具體的應(yīng)用:

1、在一個(gè)server 塊中配置多個(gè)站點(diǎn):

server

{

listen 80;

server_name ~^(www.)?(. )$;

index index.php index.html;

root /data/wwwsite/$2;

}

站點(diǎn)的主目錄應(yīng)該類似于這樣的結(jié)構(gòu):

/data/wwwsite/domain.com

/data/wwwsite/nginx.org

/data/wwwsite/baidu.com

/data/wwwsite/google.com

這樣就可以只使用一個(gè)server 塊來(lái)完成多個(gè)站點(diǎn)的配置。

2、在一個(gè)server 塊中為一個(gè)站點(diǎn)配置多個(gè)二級(jí)域名。

實(shí)際網(wǎng)站目錄結(jié)構(gòu)中我們通常會(huì)為站點(diǎn)的二級(jí)域名獨(dú)立創(chuàng)建一個(gè)目錄,同樣我們

10 / 93

標(biāo)簽: