今天說說nginx, 其實有老鐵比較奇怪,nginx不是運維來搞的嗎?確實是的,大部分狀況下,公司比較大的話,存在運維的話,這個鍋確定是運維來作的。可是如今有個趨勢叫devops以前我也說過,開發運維一體化,開發也要懂必定的運維知識。在一些互聯網的創業公司剛開始技術的工種,並非分的那麼清楚,可能都要會的。環境的搭建,運維,框架搭建,開發都必須拿得下來。
源碼:https://github.com/limingios/netFuture/tree/master/nginxcss
介紹java
Nginx是一個輕量級、高性能、穩定性高、併發性好的HTTP和反向代理服務器。也是因爲其的特性,其應用很是廣。linux
歷史ios
由俄羅斯的程序設計師Igor Sysoev所開發,最初供俄國大型的入口網站及搜尋引擎Rambler(俄文:Рамблер)使用。 其特色是佔有內存少,併發能力強,事實上nginx的併發能力確實在同類型的網頁伺服器中表現較好.目前中國大陸使用nginx網站用戶有:新浪、網易、 騰訊,另外知名的微網誌Plurk也使用nginx。nginx
理解代理的概念c++
1.正向代理:某些狀況下,代理咱們用戶去訪問服務器,須要用戶手動的設置代理服務器的ip和端口號。
2.反向代理:是用來代理服務器的,代理咱們要訪問的目標服務器。代理服務器接受請求,而後將請求轉發給內部網絡的服務器(集羣化),並將從服務器上獲得的結果返回給客戶端,此時代理服務器對外就表現爲一個服務器。git
系統類型 | 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 |
準備工做github
yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel
https://sourceforge.net/projects/pcre/files/pcre/
nginx rewrite依賴於PCRE庫,因此須要在linux系統中編譯安裝PCRE庫web
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
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
cd ~/nginx/sbin/ ./nginx
其實沒有權限
修改配置文件
vi ~/nginx/conf/nginx.conf #修改爲user root #wq保存 #從新加載nginx新的配置 ./sbin/nginx -s reload
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
cd /root/apache-tomcat-8.5.37/webapps/ROOT >index.jsp vi index.jsp cat index.jsp
###upstream 與location 模塊參數與案例講解(二)
將來軟件其實都是趨於模塊化的。拼裝完成。
參數名稱 | 描述 |
---|---|
service | 反向服務地址 加端口 |
weight | 權重 |
max_fails | 失敗多少次 認爲主機已掛掉則,踢出,默認是1次,企業通常配置2到3次,可是電商更加劇視用戶體驗因此就是1次。前提這個機器供給比較多。 |
fail_timeout | 踢出後從新探測時間 |
backup | 備用服務 |
max_conns | 容許最大鏈接數 |
slow_start | 當節點恢復,不當即加入 |
修改66.110 那個nginx配置文件
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鏈接。
後面的配置至關於把瀏覽器中的輸入路徑進行了重指
2.index
在先後端分離的基礎上,指定網站初始頁
3.proxy_set_header
用來重定義發日後端服務器的請求頭
4.proxy_pass
若是在proxy_pass後面的url加/,表示絕對根路徑;若是沒有/,表示相對路徑,把匹配的路徑部分也給代理走
通常動靜分離兩種方式
- 靜態文件放入nginx
- 靜態文件放入指定的服務器,經過請求地址來區別跳轉到那個服務器。
#思路:動、靜態的文件,請求時匹配不一樣的目錄當訪問gif,jpeg時 直接訪問e:wwwroot;
server {
listen 80;
server_name localhost;
location / {
root e:wwwroot;
index index.html;
}
location ~ .(gif|jpg|jpeg|png|bmp|swf|css|js)$ {
root e:wwwroot;
}
location ~ .(jsp|do)$ {
proxy_pass http://test;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root e:wwwroot;
}
}
* 靜態服務器的方式 >多個upstream,多個location, location的名稱不同。 PS:最後來個通俗的說法,你就是大王,我是你的太監,upstream就是後宮,後宮能夠有多個,每一個後宮裏面已經分配好了按照胖瘦不一樣,後宮A所有都是120以上,後宮B所有都100如下,後宮裏面有不少愛妃,到晚上了大王有需求了,告訴太監,太監根據後宮的狀況,按照必定的算法,看看那個愛妃能夠進行侍寢,我這個太監就告訴大王,大王就直接去我經過算法的方式告訴他的愛妃哪裏。