【linux】neginx

niginx

nginx是一個開源的,支持高性能,高併發的www服務和代理服務軟件。它是一個俄羅斯人lgor sysoev開發的,作者將源代碼開源出來供全球使用。

目前能夠提供 Web 網絡服務的程序有 IIS、Nginx 和 Apache 等。其中,IIS(Internet Information Services,互聯網信息服務)是 Windows 系統中默認的 Web 服務程序

特點:
支持高併發、資源消耗少、可以做http反向代理和負載均衡、支持異步網絡i/o事件模型epoll

Tengine

Tengine是由淘寶網發起的Web服務器項目。它在Nginx的基礎上,針對大訪問量網站的需求,添加了很多高級功能和特性。Tengine的性能和穩定性已經在大型的網站如淘寶網,天貓商城等得到了很好的檢驗。它的最終目標是打造一個高效、穩定、安全、易用的Web平臺。

安裝

1.下載tengine

wget http://tengine.taobao.org/download/tengine-2.3.2.tar.gz

2.解壓tengine

tar -zxvf tengine-2.3.2.tar.gz

3.進入解壓後的文件夾進行編譯安裝

cd tengine-2.3.2
./configure --prefix=/opt/tbnginx/
make && make install

4.配置nginx的環境變量

#查看PATH值
echo $PATH
#編輯文件
vim /etc/profile
#寫入PATH值,在開頭添加nginx的路徑,以冒號分割
PATH="/opt/tbnginx/sbin:/opt/python367/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin"
#讀取文件,讓配置生效
source /etc/profile

5.啓動nginx

nginx

nginx指令

nginx  # 啓動nginx
nginx -s stop  # 停止nginx
nginx -s reload  #平滑重啓,不停止進程,重新讀取配置文件 
nginx -t  #檢測nginx.conf語法是否正確

niginx目錄結構

conf   #存放nginx的配置文件
html   #存放nginx靜態文件的
logs   #nginx的運行日誌,錯誤日誌,訪問日誌
sbin   #存放可執行命令 

虛擬主機

虛擬主機就是將一臺服務器分割成多個“虛擬服務器”,每個站點使用各自的硬盤空間,由於省資源,省錢,衆多網站都使用虛擬主機來部署網站。

在nginx.conf配置文件中使用server{}代碼塊標籤來表示一個虛擬主機。

虛擬主機類型

基於域名的虛擬主機
通過不同的域名區分不同的虛擬主機,是企業應用最廣的虛擬主機。

基於端口的虛擬主機
通過不同的端口來區分不同的虛擬主機,一般用作企業內部網站,不對外直接提供服務的後臺,例如www.pythonav.cn:9000

基於IP的虛擬主機
通過不同的IP區分不同的虛擬主機,此類比較少見,一般業務需要多IP的常見都會在負載均衡中綁定VIP

nginx的訪問日誌功能

打開nginx.conf中的如下配置

log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                  '$status $body_bytes_sent "$http_referer" '
                  '"$http_user_agent" "$http_x_forwarded_for"';

access_log  logs/access.log  main;
access_log  "pipe:rollback logs/access_log interval=1d baknum=7 maxsize=2G"  main;

404錯誤頁面

打開nginx.conf中的如下配置

error_page  404              /404.html;

Nginx配置文件

CoreModule核心模塊

user www;                       #Nginx進程所使用的用戶
worker_processes 1;             #Nginx運行的work進程數量(建議與CPU數量一致或auto)
error_log /log/nginx/error.log  #Nginx錯誤日誌存放路徑
pid /var/run/nginx.pid          #Nginx服務運行後產生的pid進程號

events事件模塊

events {            
    worker_connections  #每個worker進程支持的最大連接數
    use epool;          #事件驅動模型, epoll默認
}

http內核模塊

# 公共的配置定義在http{}
http {  //http層開始
...    
    #使用Server配置網站, 每個Server{}代表一個網站(簡稱虛擬主機)
    'server' {
        listen       80;        #監聽端口, 默認80
        server_name  localhost; #提供服務的域名或主機名
        access_log host.access.log  #訪問日誌
        #控制網站訪問路徑
        'location' / {
            root   /usr/share/nginx/html;   #存放網站代碼路徑
            index  index.html index.htm;    #服務器返回的默認頁面文件
        }
        #指定錯誤代碼, 統一定義錯誤頁面, 錯誤代碼重定向到新的Locaiton
        error_page   500 502 503 504  /50x.html;
    }
    ...
    #第二個虛擬主機配置
    'server' {
    ...
    }
    
    include /etc/nginx/conf.d/*.conf; #包含/etc/nginx/conf.d/目錄下所有以.conf結尾的文件

}   #http層結束

反向代理

反向代理服務器位於用戶與目標服務器之間,但是對於用戶而言,反向代理服務器就相當於目標服務器,即用戶直接訪問反向代理服務器就可以獲得目標服務器的資源。同時,用戶不需要知道目標服務器的地址,也無須在用戶端作任何設定,提高了內部服務器的安全。

配置反向代理

server {
      listen       80 default_server;
       server_name  _;
       location / {
       #請求轉發參數 proxy_pass
       proxy_pass    http://192.168.13.117;
       }
}  

負載均衡

Web服務器,直接面向用戶,往往要承載大量併發請求,單臺服務器難以負荷,我使用多臺WEB服務器組成集羣,前端使用Nginx負載均衡,將請求分散的打到我們的後端服務器集羣中,
實現負載的分發。那麼會大大提升系統的吞吐率、請求性能、高容災
在這裏插入圖片描述
Nginx要實現負載均衡需要用到proxy_pass代理模塊配置,Nginx負載均衡與Nginx代理不同地方在於:Nginx代理僅代理一臺服務器,而Nginx負載均衡則是將客戶端請求代理轉發至一組upstream虛擬服務池,Nginx可以配置代理多臺服務器,當一臺服務器宕機之後,仍能保持系統可用。

配置反向代理

配置upstream:在nginx.conf的 http 區域中添加配置

upstream myupstream {
      server 10.0.0.10:8000;
      server 10.0.0.11:9000;
      #可以添加多個
}

配置location

location / {
  	#請求轉發參數 proxy_pass
    #proxy_pass是基於http協議的請求轉發
    proxy_pass   http://myupstream;
}

此時初步負載均衡已經完成,upstream默認按照輪訓方式負載,每個請求按時間順序逐一分配到後端節點。

upstream分配策略

1.輪詢:

upstream的默認分配策略就是輪詢

2.weight 權重:

upstream myupstream {
       server 10.0.0.10:8000 weight=5;
       server 10.0.0.11:9000 weight=10;#這個節點訪問比率是大於8000的
}

3.ip_hash:

每個請求按訪問ip的hash結果分配,這樣每個訪客固定訪問一個後端服務器
upstream myupstream {
    ip_hash;
       server 10.0.0.10:8000;
       server 10.0.0.11:9000;
}

4.backup

在非backup機器繁忙或者宕機時,請求backup機器,因此機器默認壓力最小

upstream myupstream {
       server 10.0.0.10:8000 weight=5;
       server 10.0.0.11:9000;
       server node.oldboy.com:8080 backup;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章