Nginx實戰之1.1-1.6 Nginx介紹,安裝及配置文件詳解

1.1 Nginx介紹

HTTP協議發展簡史 加粗

 https://coding.net/u/aminglinux/p/nginx/git/blob/master/http/version.md

 1991年發佈0.9版,只有GET方法,僅支持html,一個連接一個請求

 1996年5月發佈1.0版本,GET/POST/HEAD,HTTP Header,支持多種文件類型,一個連接一個請求

 1997年1月發佈1.1版本,更多方法(DELETE/PUT),一個連接多個請求,虛擬主機等

 2015年發佈HTTP/2版本,二進制協議,多工,數據流,頭信息壓縮和索引,服務器推送

HTTP協議相關概念 加粗

 https://coding.net/u/aminglinux/p/nginx/git/blob/master/http/http.md

 Request,Response,狀態碼,請求方法

 HTTP工作原理

 URI,URL


Nginx介紹

加粗常見WebServer(排行https://news.netcraft.com/archives/2018/, https://w3techs.com/technologies/overview/web_server/all )

老牌:Httpd(早期叫Apache) ,開源,市場份額最高

微軟:IIS

輕量:Lighttpd,性能高,低耗能,功能欠缺

加粗 Nginx誕生

2004年10月發佈,俄國人Igor Sysoev開發,rambler.ru

加粗 Nginx官網、版本

nginx.org  1.14.0穩定版

國內分支Tengine(http://tengine.taobao.org/) 

加粗 Nginx功能介紹

Http服務、反向代理、負載均衡、郵件代理、緩存加速、SSL、flv/mp4流媒體


1.2 Nginx安裝(yum)


vi /etc/yum.repos.d/nginx.repo

 https://coding.net/u/aminglinux/p/nginx/git/blob/master/2z/nginx.repo

 [nginx] 

name=nginx repo 

baseurl=http://nginx.org/packages/centos/$releasever/$basearch/ 

gpgcheck=0 

enabled=1


yum install -y nginx

systemctl start/stop/restart/reload nginx

加粗 測試:瀏覽器訪問或者curl訪問

 檢查服務進程:ps aux |grep nginx

 檢查端口監聽:netstat -lnp |grep ‘:80’

 有防火牆,需加規則iptables -I INPUT -p tcp --dport 80 -j ACCEPT

加粗 nginx -V查看版本以及各個目錄、參數



1.3 源碼包安裝


cd /usr/local/src

wget http://nginx.org/download/nginx-1.14.0.tar.gz

tar zxf nginx-1.14.0.tar.gz

cd nginx-1.14.0; ./configure --prefix=/usr/local/nginx

make && make install

加粗 服務啓動,關閉,加載等命令

/usr/local/nginx/sbin/nginx  //啓動

pkill nginx //殺死nginx進程,停止nginx服務

killall nginx //效果是一樣的

killall的安裝包如下:

# rpm -qf `which killall`

psmisc-22.20-15.el7.x86_64


/usr/local/nginx/sbin/nginx -t //檢測配置文件語法錯誤

/usr/local/nginx/sbin/nginx -s reload//重載配置


歡迎頁面加載信息修改

# vim /usr/local/nginx/html/index.html


加粗 服務管理腳本

腳本內容:https://coding.net/u/aminglinux/p/aminglinux-book/git/blob/master/D15Z/etc_init.d_nginx

操作方法:

vim /etc/init.d/nginx

將腳本內容複製如下

#!/bin/bash

# chkconfig: - 30 21

# description: http service.

# Source Function Library

. /etc/init.d/functions

# Nginx Settings


NGINX_SBIN="/usr/local/nginx/sbin/nginx"

NGINX_CONF="/usr/local/nginx/conf/nginx.conf"

NGINX_PID="/usr/local/nginx/logs/nginx.pid"

RETVAL=0

prog="Nginx"


start() 

{

    echo -n $"Starting $prog: "

    mkdir -p /dev/shm/nginx_temp

    daemon $NGINX_SBIN -c $NGINX_CONF

    RETVAL=$?

    echo

    return $RETVAL

}


stop() 

{

    echo -n $"Stopping $prog: "

    killproc -p $NGINX_PID $NGINX_SBIN -TERM

    rm -rf /dev/shm/nginx_temp

    RETVAL=$?

    echo

    return $RETVAL

}


reload()

{

    echo -n $"Reloading $prog: "

    killproc -p $NGINX_PID $NGINX_SBIN -HUP

    RETVAL=$?

    echo

    return $RETVAL

}


restart()

{

    stop

    start

}


configtest()

{

    $NGINX_SBIN -c $NGINX_CONF -t

    return 0

}


case "$1" in

  start)

        start

        ;;

  stop)

        stop

        ;;

  reload)

        reload

        ;;

  restart)

        restart

        ;;

  configtest)

        configtest

        ;;

  *)

        echo $"Usage: $0 {start|stop|reload|restart|configtest}"

        RETVAL=1

esac


exit $RETVAL


賦予755權限

chmod 755 !$


以後啓動,關閉nginx的命令就是:

/etc/init.d/nginx start

/etc/init.d/nginx stop


開機啓動自動nginx

chkconfig --add nginx

chkconfig nginx on


1.4 nginx配置文件詳解1


Nginx配置文件

位置:

yum安裝:/etc/nginx/nginx.conf

源碼包編譯:/usr/local/nginx/conf/nginx.conf

配置文件結構


配置文件內容


全局配置(user、worker_processes、error_log、pid)

events(網絡連接相關,worker_connections)

http(最重要的部分,大部分功能都放這裏)

server(虛擬主機相關)

location(server裏面)


解釋:

全局配置項結構

https://coding.net/u/aminglinux/p/nginx/git/blob/master/3z/global.md 

nginx.conf全局配置

user nobody;

定義運行nginx服務的用戶,還可以加上組,如 user nobody nobody;

worker_processes 1;

定義nginx子進程數量,即提供服務的進程數量,該數值建議和服務cpu核數保持一致。
除了可以定義數字外,還可以定義爲auto,表示讓系統自動調整。

error_log logs/error.log;

定義錯誤日誌的路徑,可以是相對路徑(相對prefix路徑的),也可以是絕對路徑。
該配置可以在此處定義,也可以定義到http、server、location裏

error_log logs/error.log notice;

定義錯誤日誌路徑以及日誌級別.
錯誤日誌級別:常見的錯誤日誌級別有[debug|info|notice|warn|error|crit|alert|emerg],級別越高記錄的信息越少。
如果不定義默認是error

pid logs/nginx.pid;

定義nginx進程pid文件所在路徑,可以是相對路徑,也可以是絕對路徑。

worker_rlimit_nofile 100000;

定義nginx最多打開文件數限制。如果沒設置的話,這個值爲操作系統(ulimit -n)的限制保持一致。
把這個值設高,nginx就不會有“too many open files”問題了。

events配置項結構

https://coding.net/u/aminglinux/p/nginx/git/blob/master/3z/events.md 

events配置部分

worker_connections 1024;

定義每個work_process同時開啓的最大連接數,即允許最多只能有這麼多連接。
如果是2個wokr_process的話,那麼就是1024*2=2048個連接數。連接數根據實際來定義,例如高併發的網站,例如淘寶網這參數就會設定幾萬了。

accept_mutex on;

當某一個時刻只有一個網絡連接請求服務器時,服務器上有多個睡眠的進程會被同時叫醒,這樣會損耗一定的服務器性能。
Nginx中的accept_mutex設置爲on,將會對多個Nginx進程(worker processer)接收連接時進行序列化,防止多個進程爭搶資源。
默認就是on。

multi_accept on;

nginx worker processer可以做到同時接收多個新到達的網絡連接,前提是把該參數設置爲on。
默認爲off,即每個worker process一次只能接收一個新到達的網絡連接。

use epoll;

Nginx服務器提供了多個事件驅動器模型來處理網絡消息。
其支持的類型有:select、poll、kqueue、epoll、rtsing、/dev/poll以及eventport。

* select:只能在Windows下使用,這個事件模型不建議在高負載的系統使用
* poll:Nginx默認首選,但不是在所有系統下都可用
* kqueue:這種方式在FreeBSD 4.1+, OpenBSD2.9+, NetBSD 2.0, 和 MacOS X系統中是最高效的
* epoll: 這種方式是在Linux 2.6+內核中最高效的方式
* rtsig:實時信號,可用在Linux 2.2.19的內核中,但不適用在高流量的系統中
* /dev/poll: Solaris 7 11/99+,HP/UX 11.22+, IRIX 6.5.15+, and Tru64 UNIX 5.1A+操作系統最高效的方式
* eventport: Solaris 10最高效的方式

http配置項

https://coding.net/u/aminglinux/p/nginx/git/blob/master/3z/http.md


server配置項

https://coding.net/u/aminglinux/p/nginx/git/blob/master/3z/server.md



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