『網際網路架構』軟體架構-nginx(上)(19)
今天說說nginx, 其實有老鐵比較奇怪,nginx不是運維來搞的嗎?確實是的,大部分情況下,公司比較大的話,存在運維的話,這個鍋肯定是運維來做的。但是現在有個趨勢叫devops之前我也說過,開發運維一體化,開發也要懂一定的運維知識。在一些網際網路的創業公司剛開始技術的工種,並不是分的那麼清楚,可能都要會的。環境的搭建,運維,框架搭建,開發都必須拿得下來。
原始碼:https://github.com/limingios/netFuture/tree/master/nginx
Nginx服務搭建與基礎演示(一)
Nginx
-
官網
>http://nginx.org/
- 介紹
Nginx是一個輕量級、高效能、穩定性高、併發性好的HTTP和反向代理伺服器。也是由於其的特性,其應用非常廣。
- 歷史
由俄羅斯的程式設計師Igor Sysoev所開發,最初供俄國大型的入口網站及搜尋引擎Rambler(俄文:Рамблер)使用。 其特點是佔有記憶體少,併發能力強,事實上nginx的併發能力確實在同類型的網頁伺服器中表現較好.目前中國大陸使用nginx網站使用者有:新浪、網易、 騰訊,另外知名的微網誌Plurk也使用nginx。
- 理解代理的概念
1.正向代理:某些情況下,代理我們使用者去訪問伺服器,需要使用者手動的設定代理伺服器的ip和埠號。
2.反向代理:是用來代理伺服器的,代理我們要訪問的目標伺服器。代理伺服器接受請求,然後將請求轉發給內部網路的伺服器(叢集化),並將從伺服器上得到的結果返回給客戶端,此時代理伺服器對外就表現為一個伺服器。
- 根據原始碼配置的機器
系統型別 | IP地址 | 節點角色 | 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 |
-
三臺機器
>準備工作
yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel
-
nginx主機安裝pcre的安裝包(192.168.66.110)
> https://sourceforge.net/projects/pcre/files/pcre/
nginx rewrite依賴於PCRE庫,所以需要在linux系統中編譯安裝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 mkdirnginx 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
- 啟動nginx
cd ~/nginx/sbin/ ./nginx
其實沒有許可權
修改配置檔案
vi ~/nginx/conf/nginx.conf #修改成user root #wq儲存 #重新載入nginx新的配置 ./sbin/nginx -s reload
- 111 和112 兩個機器安裝tomcat
java -version wget http://mirrors.hust.edu.cn/apache/tomcat/tomcat-8/v8.5.37/bin/apache-tomcat-8.5.37.tar.gz ````   ``` bash 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 新增一個index.jsp檔案方法檢視 ``` bash cd /root/apache-tomcat-8.5.37/webapps/ROOT >index.jsp vi index.jsp cat index.jsp ````     ###upstream 與location 模組引數與案例講解(二) >未來軟體其實都是趨於模組化的。拼裝完成。 ##### upstream * 官網的介紹 >http://nginx.org/en/docs/  * upstream例項 >http://nginx.org/en/docs/http/ngx_http_upstream_module.html  * upstream 引數 | 引數名稱 | 描述 | | :------: | :--------: | |service|反向服務地址 加埠| |weight |權重| |max_fails|失敗多少次 認為主機已掛掉則,踢出,預設是1次,企業一般配置2到3次,但是電商更加重視使用者體驗所以就是1次。前提這個機器供給比較多。| |fail_timeout|踢出後重新探測時間| |backup |備用服務| |max_conns| 允許最大連線數| |slow_start |當節點恢復,不立即加入| >修改66.110 那個nginx配置檔案 ``` bash vi /root/nginx/conf/nginx.conf cat /root/nginx/conf/nginx.conf ````   >因為權重相同,所以輪播111 和 112 2個tomcat   *負載均衡演算法 1.ll+weight > 預設的負載演算法,其實就是根據權重才分配服務請求。 2.ip_hash >基於Hash 計算 應用場景:保持session 一至性,第一次訪問那臺,一直是同一臺。hash(ip)%3 =index。弊端小區或者學校集中化的地方,他們出去的ip都是一致的,某個節點負載會非常非常的大。成為熱點,有了ip_hash導致weight權重就失效了。 3.url_hash > (第三方)應用場景:靜態資源快取,節約儲存,加快速度 4.least_conn >最少連結 5.least_time >最小的響應時間,計算節點平均響應時間,然後取響應最快的那個,分配更高權重。 6.keeplive >佔用連線數。記憶體消耗比較大,但是響應速度很快,應該保持這socket連線。 * location 1.root > 後面的配置相當於把瀏覽器中的輸入路徑進行了重指 2.index >在前後端分離的基礎上,指定網站初始頁 3.proxy_set_header >用來重定義發往後端伺服器的請求頭 4.proxy_pass >如果在proxy_pass後面的url加/,表示絕對根路徑;如果沒有/,表示相對路徑,把匹配的路徑部分也給代理走  ### 動靜分離方案 >一般動靜分離兩種方式 1. 靜態檔案放入nginx 2. 靜態檔案放入指定的伺服器,通過請求地址來區別跳轉到那個伺服器。 * 靜態檔案放入nginx ``` bash #思路:動、靜態的檔案,請求時匹配不同的目錄當訪問gif,jpeg時 直接訪問e:wwwroot; server { listen80; server_namelocalhost; location / { roote:wwwroot; indexindex.html; } # 所有靜態請求都由nginx處理,存放目錄為html location ~ .(gif|jpg|jpeg|png|bmp|swf|css|js)$ { roote:wwwroot; } # 所有動態請求都轉發給tomcat處理 location ~ .(jsp|do)$ { proxy_passhttp://test; } error_page500 502 503 504/50x.html; location = /50x.html { roote:wwwroot; } }
-
靜態伺服器的方式
>多個upstream,多個location, location的名稱不一樣。
PS:最後來個通俗的說法,你就是大王,我是你的太監,upstream就是後宮,後宮可以有多個,每個後宮裡面已經分配好了按照罩杯不同,後宮A全部都是A罩杯,後宮B全部都是B罩杯,後宮裡面有很多愛妃,到晚上了大王有需求了,告訴太監,太監根據後宮的情況,按照一定的演算法,看看那個愛妃可以進行侍寢,我這個太監就告訴大王,大王就直接去我通過演算法的方式告訴他的愛妃哪裡。
>>原創文章,歡迎轉載。轉載請註明:轉載自IT人故事會,謝謝!
>>原文連結地址:上一篇:已是最新文章