概述:nginx是一款自由的、開源的、高性能的HTTP服務(wù)器和反向代理 服務(wù)器;同時也是一個IMAP、POP3、SMTP代理 服務(wù)器;(這里少一句話,敏感詞語 請看評論!?。。?/strong>
創(chuàng)新互聯(lián)公司是專業(yè)的西峽網(wǎng)站建設(shè)公司,西峽接單;提供成都網(wǎng)站制作、成都做網(wǎng)站,網(wǎng)頁設(shè)計,網(wǎng)站設(shè)計,建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進行西峽網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團隊,希望更多企業(yè)前來合作!
解析:解析,請看評論,有敏感詞語。
第一層:client,客戶端層,發(fā)出http請求的單位;
第二層:反向代理層,agent層,負責(zé)將client客戶端的請求,代理轉(zhuǎn)發(fā)到第三層(real server)真實的服務(wù)器的節(jié)點,并且保證real server節(jié)點不暴露在client前;
第三層:real server,服務(wù)器層,真實負責(zé)處理cleint客戶端的請求,通常在此為多臺服務(wù)器構(gòu)成,形成負載均衡之效果;
概述:nginx扮演了反向代理 服務(wù)器的角色,它是以依據(jù)什么樣的規(guī)則進行請求分發(fā)的呢?不用的項目應(yīng)用場景,分發(fā)的規(guī)則是否可以控制呢?
實現(xiàn)方式:
硬件負載均衡:也稱為硬負載,如F5負載均衡,相對造價昂貴成本較高,但是數(shù)據(jù)的穩(wěn)定性安全性等等有非常好的保障,如中國移動中國聯(lián)通這樣的公司才會選擇硬負載進行操作;
軟件負載均衡:更多的公司考慮到成本原因,會選擇使用軟件負載均衡,軟件負載均衡是利用現(xiàn)有的技術(shù)結(jié)合主機硬件實現(xiàn)的一種消息隊列分發(fā)機制;
nginx的負載均衡算法:
1.weight輪詢(默認):接收到的請求按照順序逐一分配到不同的后端服務(wù)器。這種方式下,可以給不同的后端服務(wù)器設(shè)置一個權(quán)重值(weight),用于調(diào)整不同的服務(wù)器上請求的分配率;權(quán)重數(shù)據(jù)越大,被分配到請求的幾率越大;
2.ip_hash:每個請求按照發(fā)起客戶端的ip的hash結(jié)果進行匹配,這樣的算法下一個固定ip地址的客戶端總會訪問到同一個后端服務(wù)器,這也在一定程度上解決了集群部署環(huán)境下session共享的問題;
3.fair:智能調(diào)整調(diào)度算法,動態(tài)的根據(jù)后端服務(wù)器的請求處理到響應(yīng)的時間進行均衡分配,響應(yīng)時間短處理效率高的服務(wù)器分配到請求的概率高,響應(yīng)時間長處理效率低的服務(wù)器分配到的請求少;結(jié)合了前兩者的優(yōu)點的一種調(diào)度算法。但是需要注意的是nginx默認不支持fair算法,如果要使用這種調(diào)度算法,請安裝upstream_fair模塊;
4.url_hash:按照訪問的url的hash結(jié)果分配請求,每個請求的url會指向后端固定的某個服務(wù)器,可以在nginx作為靜態(tài)服務(wù)器的情況下提高緩存效率。同樣要注意nginx默認不支持這種調(diào)度算法,要使用的話需要安裝nginx的hash軟件包;
案例拓撲:
案例環(huán)境:
系統(tǒng)類型 | IP地址 | 主機名 | 內(nèi)存 | 所需軟件 | |
---|---|---|---|---|---|
Centos 7.4 1708 64bit | 192.168.100.101 | www.linuxfan.cn | 1G | nginx-1.12.2.tar.gz | |
Centos 6.5 64bit | 192.168.100.150 | real1.linuxfan.cn | 1G | httpd-2.2.17.tar.gz、cmake-2.8.6.tar.gz、MySQL-5.5.22.tar.gz、libmcrypt-2.5.8.tar.gz、mcrypt-2.6.8.tar.gz、mhash-0.9.9.9.tar.gz、php-5.3.28.tar.gz、ZendGuardLoader-php-5.3-linux-glibc23-x86_64.tar.gz | |
Centos 6.5 64bit | 192.168.100.151 | real2.linuxfan.cn | 1G | httpd-2.2.17.tar.gz、cmake-2.8.6.tar.gz、mysql-5.5.22.tar.gz、libmcrypt-2.5.8.tar.gz、mcrypt-2.6.8.tar.gz、mhash-0.9.9.9.tar.gz、php-5.3.28.tar.gz、ZendGuardLoader-php-5.3-linux-glibc23-x86_64.tar.gz |
部署real1.linuxfan.cn節(jié)點的lamp服務(wù);
[root@real1 ~]# ls
lamp_install_publis-app-2015-07-16.tar.xz
[root@real1 ~]# tar Jxvf lamp_install_publis-app-2015-07-16.tar.xz
[root@real1 ~]# cd bin/
[root@real1 bin]#./apache_install.sh &&./mysql_install.sh &&./mysql_config.sh &&./php_install.sh &&./php_config.sh &&./lamp_config.sh
[root@real1 bin]# cd
[root@real1 ~]# netstat -utpln |grep 80
tcp 0 0 :::80 :::* LISTEN 50971/httpd
[root@real1 ~]# netstat -utpln |grep 3306
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 6693/mysqld
[root@real1 ~]# rm -rf /usr/local/httpd/htdocs/index.html
[root@real1 ~]# vi /usr/local/httpd/htdocs/index.php
".$_SESSION['time'].""."
";
echo "訪問的服務(wù)器地址是"."".$_SERVER['SERVER_ADDR'].""."
";
echo "訪問的服務(wù)器域名是"."".$_SERVER['SERVER_NAME'].""."
";
echo "SESSIONNAME是"."".session_name().""."
";
echo "SESSIONID是"."".session_id().""."
";
?>
部署real2.linuxfan.cn節(jié)點的lamp服務(wù);
[root@real2 ~]# ls
lamp_install_publis-app-2015-07-16.tar.xz
[root@real2 ~]# tar Jxvf lamp_install_publis-app-2015-07-16.tar.xz
[root@real2 ~]# cd bin/
[root@real2 bin]#./apache_install.sh &&./mysql_install.sh &&./mysql_config.sh &&./php_install.sh &&./php_config.sh &&./lamp_config.sh
[root@real2 bin]# cd
[root@real2 ~]# netstat -utpln |grep 80
tcp 0 0 :::80 :::* LISTEN 50971/httpd
[root@real2 ~]# netstat -utpln |grep 3306
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 6693/mysqld
[root@real2 ~]# rm -rf /usr/local/httpd/htdocs/index.html
[root@real2 ~]# vi /usr/local/httpd/htdocs/index.php
".$_SESSION['time'].""."
";
echo "訪問的服務(wù)器地址是"."".$_SERVER['SERVER_ADDR'].""."
";
echo "訪問的服務(wù)器域名是"."".$_SERVER['SERVER_NAME'].""."
";
echo "SESSIONNAME是"."".session_name().""."
";
echo "SESSIONID是"."".session_id().""."
";
?>
安裝www.linuxfan.cn節(jié)點的nginx服務(wù);
[root@www ~]# hostnamectl set-hostname www.linuxfan.cn
[root@www ~]# hostname
www.linuxfan.cn
[root@www ~]# yum -y install pcre-devel zlib-devel
[root@www ~]# useradd -M -s /sbin/nologin nginx
[root@www ~]# tar zxvf nginx-1.12.2.tar.gz -C /usr/src/
[root@www ~]# cd /usr/src/nginx-1.12.2/
[root@www nginx-1.12.2]# ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module
[root@www nginx-1.12.2]# make && make install
[root@www nginx-1.12.2]# cd
[root@www ~]# ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/
[root@www ~]# vi /usr/lib/systemd/system/nginx.service
[Unit]
Description=nginxapi
After=network.target
[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=kill -s HUP $(cat /usr/local/nginx/logs/nginx.pid)
ExecStop=kill -s QUIT $(cat /usr/local/nginx/logs/nginx.pid)
PrivateTmp=Flase
[Install]
WantedBy=multi-user.target
[root@www ~]# systemctl start nginx
[root@www ~]# systemctl enable nginx
[root@www ~]# netstat -utpln |grep nginx
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 3538/nginx: master
配置nginx節(jié)點的反向代理服務(wù);
[root@www ~]# vi /usr/local/nginx/conf/nginx.conf
34 upstream lamp_server { ##在http區(qū)域內(nèi),server區(qū)域上
35 server 192.168.100.150:80 weight=1;
36 server 192.168.100.151:80 weight=1;
37 }
47 location / {
48 root html;
49 index index.html index.htm;
50 }
51 location ~ \.(asp|aspx|php|jsp|do)$ { ##在server區(qū)域內(nèi)添加
52 proxy_pass http://lamp_server;
53 }
[root@www ~]# systemctl stop nginx
[root@www ~]# systemctl start nginx
查看日志分析訪問情況;
[root@www ~]# tail -3 /usr/local/nginx/logs/access.log
192.168.100.1 - - [16/Jul/2018:17:01:34 +0800] "GET / HTTP/1.1" 200 612 "-" "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36 SE 2.X MetaSr 1.0"
192.168.100.1 - - [16/Jul/2018:17:02:02 +0800] "GET /index.php HTTP/1.1" 200 797 "-" "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36 SE 2.X MetaSr 1.0"
192.168.100.1 - - [16/Jul/2018:17:02:11 +0800] "GET /index.php HTTP/1.1" 200 797 "-" "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36 SE 2.X MetaSr 1.0"
[root@real1 ~]# tail -3 /usr/local/httpd/logs/access_log
192.168.100.102 - - [16/Jul/2018:17:07:55 +0800] "GET /index.php HTTP/1.0" 200 797
192.168.100.102 - - [16/Jul/2018:17:07:56 +0800] "GET /index.php HTTP/1.0" 200 797
192.168.100.102 - - [16/Jul/2018:17:09:03 +0800] "GET /index.php HTTP/1.0" 200 797
[root@real2 ~]# tail -3 /usr/local/httpd/logs/access_log
192.168.100.102 - - [16/Jul/2018:17:07:56 +0800] "GET /index.php HTTP/1.0" 200 797
192.168.100.102 - - [16/Jul/2018:17:07:56 +0800] "GET /index.php HTTP/1.0" 200 797
192.168.100.102 - - [16/Jul/2018:17:09:12 +0800] "GET /index.php HTTP/1.0" 200 797
做到這案列就算完成了,查看日志分析!