『互聯(lián)網(wǎng)架構(gòu)』軟件架構(gòu)-nginx(上)(19)

原創(chuàng)文章,歡迎轉(zhuǎn)載。轉(zhuǎn)載請注明:轉(zhuǎn)載自IT人故事會(huì),謝謝!
原文鏈接地址:『互聯(lián)網(wǎng)架構(gòu)』軟件架構(gòu)-nginx(上)(19)

今天說說nginx, 其實(shí)有老鐵比較奇怪,nginx不是運(yùn)維來搞的嗎?確實(shí)是的,大部分情況下,公司比較大的話,存在運(yùn)維的話,這個(gè)鍋肯定是運(yùn)維來做的。但是現(xiàn)在有個(gè)趨勢叫devops之前我也說過,開發(fā)運(yùn)維一體化,開發(fā)也要懂一定的運(yùn)維知識。在一些互聯(lián)網(wǎng)的創(chuàng)業(yè)公司剛開始技術(shù)的工種,并不是分的那么清楚,可能都要會(huì)的。環(huán)境的搭建,運(yùn)維,框架搭建,開發(fā)都必須拿得下來。
源碼:https://github.com/limingios/netFuture/tree/master/nginx

Nginx服務(wù)搭建與基礎(chǔ)演示(一)

Nginx

  • 官網(wǎng)

http://nginx.org/

  • 介紹

Nginx是一個(gè)輕量級、高性能、穩(wěn)定性高、并發(fā)性好的HTTP和反向代理服務(wù)器。也是由于其的特性,其應(yīng)用非常廣。

  • 歷史

由俄羅斯的程序設(shè)計(jì)師Igor Sysoev所開發(fā),最初供俄國大型的入口網(wǎng)站及搜尋引擎Rambler(俄文:Рамблер)使用。 其特點(diǎn)是占有內(nèi)存少,并發(fā)能力強(qiáng),事實(shí)上nginx的并發(fā)能力確實(shí)在同類型的網(wǎng)頁伺服器中表現(xiàn)較好.目前中國大陸使用nginx網(wǎng)站用戶有:新浪、網(wǎng)易、 騰訊,另外知名的微網(wǎng)志Plurk也使用nginx。

  • 理解代理的概念

1.正向代理:某些情況下,代理我們用戶去訪問服務(wù)器,需要用戶手動(dòng)的設(shè)置代理服務(wù)器的ip和端口號。
2.反向代理:是用來代理服務(wù)器的,代理我們要訪問的目標(biāo)服務(wù)器。代理服務(wù)器接受請求,然后將請求轉(zhuǎn)發(fā)給內(nèi)部網(wǎng)絡(luò)的服務(wù)器(集群化),并將從服務(wù)器上得到的結(jié)果返回給客戶端,此時(shí)代理服務(wù)器對外就表現(xiàn)為一個(gè)服務(wù)器。

  • 根據(jù)源碼配置的機(jī)器
系統(tǒng)類型 IP地址 節(jié)點(diǎn)角色 CPU Memory Hostname
Centos7 192.168.66.110 nginx 1 2G nginx
Centos7 192.168.66.111 tomcat 1 2G tomcat1
Centos7 192.168.66.112 tomcat 1 2G tomcat2
  • 三臺(tái)機(jī)器

準(zhǔn)備工作

yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel
  • nginx主機(jī)安裝pcre的安裝包(192.168.66.110)

https://sourceforge.net/projects/pcre/files/pcre/
nginx rewrite依賴于PCRE庫,所以需要在linux系統(tǒng)中編譯安裝PCRE庫

wget https://nchc.dl.sourceforge.net/project/pcre/pcre/8.41/pcre-8.41.tar.gz
tar zxvf pcre-8.41.tar.gz
cd image.png
./configure
make && make install
pcre-config --prefix
  • 安裝nginx
cd ..
wget http://nginx.org/download/nginx-1.13.10.tar.gz
tar zxvf nginx-1.13.10.tar.gz
mkdir  nginx
cd nginx-1.13.10
./configure --prefix=/root/nginx --with-http_stub_status_module --with-http_ssl_module --with-pcre=/root/pcre-8.41
make && make install 
cd ~
cd nginx/sbin/
./nginx -v
./nginx -t
  • 啟動(dòng)nginx
cd ~/nginx/sbin/
./nginx

其實(shí)沒有權(quán)限

修改配置文件

vi ~/nginx/conf/nginx.conf
#修改成user root
#wq保存
#重新加載nginx新的配置
./sbin/nginx -s reload
  • 111 和112 兩個(gè)機(jī)器安裝tomcat
java -version
wget http://mirrors.hust.edu.cn/apache/tomcat/tomcat-8/v8.5.37/bin/apache-tomcat-8.5.37.tar.gz
tar zxvf apache-tomcat-8.5.37.tar.gz 
cd apache-tomcat-8.5.37
cd bin
./startup.sh
curl 127.0.0.1:8080
  • 111 和112 添加一個(gè)index.jsp文件方法查看
cd /root/apache-tomcat-8.5.37/webapps/ROOT
>index.jsp
vi index.jsp
cat index.jsp

upstream 與location 模塊參數(shù)與案例講解(二)

未來軟件其實(shí)都是趨于模塊化的。拼裝完成。

upstream
  • 官網(wǎng)的介紹

http://nginx.org/en/docs/

  • upstream實(shí)例

http://nginx.org/en/docs/http/ngx_http_upstream_module.html

  • upstream 參數(shù)
參數(shù)名稱 描述
service 反向服務(wù)地址 加端口
weight 權(quán)重
max_fails 失敗多少次 認(rèn)為主機(jī)已掛掉則,踢出,默認(rèn)是1次,企業(yè)一般配置2到3次,但是電商更加重視用戶體驗(yàn)所以就是1次。前提這個(gè)機(jī)器供給比較多。
fail_timeout 踢出后重新探測時(shí)間
backup 備用服務(wù)
max_conns 允許最大連接數(shù)
slow_start 當(dāng)節(jié)點(diǎn)恢復(fù),不立即加入

修改66.110 那個(gè)nginx配置文件

vi /root/nginx/conf/nginx.conf
cat /root/nginx/conf/nginx.conf

因?yàn)闄?quán)重相同,所以輪播111 和 112 2個(gè)tomcat


yu

*負(fù)載均衡算法
1.ll+weight

默認(rèn)的負(fù)載算法,其實(shí)就是根據(jù)權(quán)重才分配服務(wù)請求。

2.ip_hash

基于Hash 計(jì)算 應(yīng)用場景:保持session 一至性,第一次訪問那臺(tái),一直是同一臺(tái)。hash(ip)%3 =index。弊端小區(qū)或者學(xué)校集中化的地方,他們出去的ip都是一致的,某個(gè)節(jié)點(diǎn)負(fù)載會(huì)非常非常的大。成為熱點(diǎn),有了ip_hash導(dǎo)致weight權(quán)重就失效了。

3.url_hash

(第三方)應(yīng)用場景:靜態(tài)資源緩存,節(jié)約存儲(chǔ),加快速度

4.least_conn

最少鏈接

5.least_time

最小的響應(yīng)時(shí)間,計(jì)算節(jié)點(diǎn)平均響應(yīng)時(shí)間,然后取響應(yīng)最快的那個(gè),分配更高權(quán)重。

6.keeplive

占用連接數(shù)。內(nèi)存消耗比較大,但是響應(yīng)速度很快,應(yīng)該保持這socket連接。

  • location
    1.root

后面的配置相當(dāng)于把瀏覽器中的輸入路徑進(jìn)行了重指

2.index

在前后端分離的基礎(chǔ)上,指定網(wǎng)站初始頁

3.proxy_set_header

用來重定義發(fā)往后端服務(wù)器的請求頭

4.proxy_pass

如果在proxy_pass后面的url加/,表示絕對根路徑;如果沒有/,表示相對路徑,把匹配的路徑部分也給代理走

動(dòng)靜分離方案

一般動(dòng)靜分離兩種方式

  1. 靜態(tài)文件放入nginx
  2. 靜態(tài)文件放入指定的服務(wù)器,通過請求地址來區(qū)別跳轉(zhuǎn)到那個(gè)服務(wù)器。
  • 靜態(tài)文件放入nginx
#思路:動(dòng)、靜態(tài)的文件,請求時(shí)匹配不同的目錄當(dāng)訪問gif,jpeg時(shí) 直接訪問e:wwwroot;

server {  
  listen       80;  
  server_name  localhost;  

  location / {  
      root   e:wwwroot;  
      index  index.html;  
  }  

  # 所有靜態(tài)請求都由nginx處理,存放目錄為html  
  location ~ .(gif|jpg|jpeg|png|bmp|swf|css|js)$ {  
      root    e:wwwroot;  
  }  

  # 所有動(dòng)態(tài)請求都轉(zhuǎn)發(fā)給tomcat處理  
  location ~ .(jsp|do)$ {  
      proxy_pass  http://test;  
  }  

  error_page   500 502 503 504  /50x.html;  
  location = /50x.html {  
      root   e:wwwroot;  
  }  
}  
  • 靜態(tài)服務(wù)器的方式

多個(gè)upstream,多個(gè)location, location的名稱不一樣。

PS:最后來個(gè)通俗的說法,你就是大王,我是你的太監(jiān),upstream就是后宮,后宮可以有多個(gè),每個(gè)后宮里面已經(jīng)分配好了按照罩杯不同,后宮A全部都是A罩杯,后宮B全部都是B罩杯,后宮里面有很多愛妃,到晚上了大王有需求了,告訴太監(jiān),太監(jiān)根據(jù)后宮的情況,按照一定的算法,看看那個(gè)愛妃可以進(jìn)行侍寢,我這個(gè)太監(jiān)就告訴大王,大王就直接去我通過算法的方式告訴他的愛妃哪里。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容