Nginx使用指南


 

nginx簡介

nginx是一個高性能、輕量級的服務器,可同時作爲web服務器、反向代理服務器。正向代理是代替客戶端(用戶)訪問服務器,反向代理是代替服務器接收、處理請求。
 

nginx的特點

  • 穩定性高
  • 系統資源佔用少
  • 併發能力強

一般用nginx反向代理tomcat(負載均衡)、代理靜態資源。

 

windows下使用nginx

啓動、關閉nginx的2種方式

1、雙擊啓動,Ctrl+Shift+Esc任務管理器結束nginx的2個進程來關閉nginx,也可以命令行結束

#查看nginx進程的pid
tasklist | findstr nginx
#結束nginx的2個進程
taskkill /f /pid pid1
taskkill /f /pid pid2

如果修改了nginx的配置,需要重啓nginx使之生效
 

2、命令行cd到nginx主目錄

#啓動
start nginx

#停止
nginx -s stop
#退出,退出之前會強制停止nginx
nginx -s quit  

#重新加載配置
nginx -s reload

如果操作過程中要重新加載配置,第二種方便些。

 

linux下使用nginx

安裝

.tar.gz中是nginx的源碼,需要自己編譯安裝,先放到/usr/local下

#安裝依賴
yum -y install pcre pcre-devel zlib zlib-devel openssl openssl-devel
yum -y install gcc automake autoconf libtool make


#解壓
tar -xzvf nginx-1.16.1.tar.gz
rm nginx-1.16.1.tar.gz


#進入解壓目錄
cd nginx-1.16.1
#指定安裝目錄
mkdir /usr/local/nginx
./configure --prefix=/usr/local/nginx


#編譯
make
#安裝
make install


#刪除解壓目錄
cd ..
rm -r nginx-1.16.1


#開啓80端口
firewall-cmd --zone=public --add-port=80/tcp --permanent
fire-wall --reload

 

常用命令

都是調用sbin下的nginx,先切換到nginx/sbin下

./nginx  #啓動nginx

./nginx -s stop  #停止
./nginx -s quit  #停止並退出

./nginx -s reload  #重新加載配置

./nginx -v  #查看nginx版本

 

設置開機啓動(可選)

vim /etc/rc.d/rc.local

末尾加上 /usr/local/nginx/sbin/nginx

 

nginx常用配置(反向代理、代理靜態資源)

#gzip  on;

#指定tomcat集羣、要使用的負載均衡算法
upstream servers{
    server 192.168.1.1:8080;
    server 192.168.1.2:8080;
    server 192.168.1.3:8080;
}

server {
    listen       80;
    server_name  localhost;

    #字符集使用utf-8
    charset utf-8;

    #access_log  logs/host.access.log  main;

    location / {
        root   html;
        index  index.html index.htm;
        #反向代理tomcat
        proxy_pass http://servers;
    }

   #代理靜態資源
    location ~* \.(html|css|js|gif|jpg|png|mp4)$ {
       #設置靜態資源根目錄,相對於nginx主目錄,在主目錄下新建文件夾static,把靜態資源放進去即可
       root static;
       #設置瀏覽器緩存的靜態資源的有效期,到期後再次訪問時會重新從nginx加載。秒s,分m,時h,天d
       expires 7d;  
    }

    #error_page  404              /404.html;

    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   html;
    }
}

 

nginx的負載均衡算法

1、輪詢(默認)
輪詢適合服務器性能差不多的情況,默認使用的就是輪詢,不需要設置什麼。
將列表中的節點排成一圈,從前往後,找空閒的服務器來處理請求。
 

2、加權輪詢
設置權重,權重大的輪到的機會更大,適合服務器性能有明顯差別的情況,性能好的權重設置大些。

upstream  servers{
    server 192.168.1.1:8080 weight=1;
    server 192.168.1.2:8080 weight=3;
    server 192.168.1.3:8080 weight=2;
}

 

3、ip_hash

根據用戶ip的hash值來轉發請求,同一用戶(ip)的請求都會被轉發給同一個服務器處理,可解決分佈式session問題

upstream  servers{
    ip_hash;
    server 192.168.1.1:8080;
    server 192.168.1.2:8080;
    server 192.168.1.3:8080;
}

 

4、url_hash(第三方)

根據請求的url來轉發,將url相同的請求轉發給同一服務器處理。一直處理某個url,該服務器上會有這個url請求的緩存,可減少處理時間

upstream  servers{
    hash $request_uri;
    server 192.168.1.1:8080;
    server 192.168.1.2:8080;
    server 192.168.1.3:8080;
}

 

5、fair(第三方)

根據服務器響應時間來分發請求,響應時間短的說明負載小、性能充足,分發給它的請求多些,fair 公平。

upstream  servers{
    fair;
    server 192.168.1.1:8080;
    server 192.168.1.2:8080;
    server 192.168.1.3:8080;
}

 
ip_hash、url_hash都是使用特定服務器節點來處理特定請求,如果該節點故障,nginx會剔除不可用的節點,將特定請求轉發給其它節點處理,url_hash影響不大,但ip_hash會丟失之前的session數據。

url_hash、fair都依賴第三方模塊,需要安裝相應的模塊。

 

只使用單個nginx容易發生單點故障,一般要用 LVS+keepalive+nginx 實現nginx的高可用。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章