1.1 什么是Nginx
Nginx (“engine x”) 是一個(gè)開(kāi)源的、支持高性能、高并發(fā)的WWW服務(wù)和代理服務(wù)軟件。它是由俄羅斯人IgorSysoev開(kāi)發(fā)的,最初被應(yīng)用在俄羅斯的大型網(wǎng)站www.rambler.ru上。后來(lái)作者將源代碼以類BSD許可證的形式開(kāi)源出來(lái)供全球使用。
1.2 Nginx的主要功能
Nginx的主要功能有以下三點(diǎn):
- 網(wǎng)頁(yè)服務(wù):Nginx是一個(gè)支持高性能、高并發(fā)的Web服務(wù)軟件,它自身是靜態(tài)Web服務(wù),并且還支持動(dòng)態(tài)Web服務(wù)。
- 反向代理/負(fù)載均衡:Nginx可以作為Web服務(wù)、PHP等動(dòng)態(tài)服務(wù)及Memcached緩存的代理服務(wù)器。
- 前端業(yè)務(wù)數(shù)據(jù)緩存:Nginx通過(guò)自身的proxy_cache模塊實(shí)現(xiàn)數(shù)據(jù)緩存的功能。
1.3 Nginx的特點(diǎn)
Nginx服務(wù)器具有以下特色及優(yōu)點(diǎn):
- 支持高并發(fā):能支持幾萬(wàn)并發(fā)連接(特別是靜態(tài)小文件業(yè)務(wù)環(huán)境)。
- 資源消耗少:在3萬(wàn)并發(fā)連接下,開(kāi)啟10個(gè)Nginx線程消耗不到200MB內(nèi)存。
- 可以做HTTP反向代理及加速緩存,即負(fù)載均衡功能,內(nèi)置對(duì)RS節(jié)點(diǎn)服務(wù)器健康檢查功能,這相當(dāng)于專業(yè)的haproxy軟件或lvs的功能。
- 具備squid等專業(yè)緩存軟件等的緩存功能。
- 支持異步網(wǎng)絡(luò)I/O事件模型epoll。
1.4 Nginx主要應(yīng)用場(chǎng)景
1、靜態(tài)Web服務(wù)器
??使用Nginx運(yùn)行HTML、JS、CSS、小圖片等靜態(tài)數(shù)據(jù)(此功能類似lighttpd軟件)。
2、配合運(yùn)行動(dòng)態(tài)Web服務(wù)器
Nginx結(jié)合FastCGI運(yùn)行PHP等動(dòng)態(tài)程序(例如使用fastcgi_pass方式)。
Nginx結(jié)合proxy_pass支持Java動(dòng)態(tài)程序(例如使用tomcat/resin服務(wù))。
Nginx結(jié)合uwsgi_pass支持Python。
3、反向代理/負(fù)載均衡:http負(fù)載均衡
4、做Web緩存服務(wù)器(把文件放入內(nèi)存里)
1.5 反向代理與負(fù)載均衡
- 正向代理:由內(nèi)向外。代替局域網(wǎng)內(nèi)PC,請(qǐng)求外部應(yīng)用服務(wù)。
- 反向代理:由外向內(nèi)。代替外部的用戶請(qǐng)求內(nèi)部的應(yīng)用服務(wù)器。
- 負(fù)載均衡:將請(qǐng)求轉(zhuǎn)發(fā)、效率高。
1.6 軟件安裝方法
Linux系統(tǒng)中的安裝軟件方法:
- rpm安裝
簡(jiǎn)單、快速,但是依賴多,解決依賴?yán)щy繁瑣。 - yum安裝
簡(jiǎn)單、快速、自動(dòng)解決依賴。但是不能選擇軟件版本或軟件存放路徑。 - 編譯安裝(源碼編譯)
慢、復(fù)雜、需要GCC編譯器,但是可以自定義安裝(版本、軟件路徑) - 將源碼制作成rpm,然后放到y(tǒng)um倉(cāng)庫(kù),實(shí)現(xiàn)yum自動(dòng)安裝。
第一次慢、復(fù)雜,但是以后安裝快,可以自定義安裝(版本、軟件路徑) - 二進(jìn)制安裝
需要制作RPM和 YUM倉(cāng)庫(kù)搭建
rpm包定制:http://blog.oldboyedu.com/autodeploy-rpm/
yum倉(cāng)庫(kù)搭建:http://blog.oldboyedu.com/autodeploy-yum/
1.7 Nginx安裝
1.7.1 兩種安裝方法
1、yum安裝
使用epel源:版本低。
使用nginx官方源:版本高。
2、編譯安裝
1.7.2 配置官方源yum安裝
配置官方y(tǒng)um源:
[root@web ~]$ vim /etc/yum.repos.d/nginx.repo
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=0
enabled=1
安裝并啟動(dòng)服務(wù):
[root@web01 ~]$ yum install nginx -y <===安裝nginx
[root@web01 ~]$ rpm -qa nginx <===查看安裝包
nginx-1.16.0-1.el7.ngx.x86_64
[root@web01 ~]$ systemctl start nginx <===啟動(dòng)服務(wù)
[root@web01 ~]$ systemctl enable nginx <===服務(wù)開(kāi)機(jī)自啟動(dòng)
[root@web01 ~]$ systemctl status nginx <===查看狀態(tài)
[root@web01 ~]$ netstat -lntup|grep nginx <===查看端口
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 8509/nginx: master
1.7.3 編譯安裝
1、下載nginx壓縮包及依賴:
[root@web01 ~]$ mkdir -p /server/tools <===創(chuàng)建安裝目錄
[root@web01 ~]$ cd /server/tools
[root@web01 /server/tools]$ wget http://nginx.org/download/nginx-1.16.0.tar.gz <===下載壓縮包
[root@web01 /server/tools]$ yum install pcre pcre-devel openssl openssl-devel -y <===安裝依賴
2、編譯安裝步驟
[root@web01 /server/tools]$ tar xf nginx-1.16.0.tar.gz <===解壓縮
[root@web01 /server/tools]$ cd nginx-1.16.0/ <===切換目錄
[root@web01 /server/tools/nginx-1.16.0]$ useradd -s /sbin/nologin www -M <===創(chuàng)建不可登錄用戶且不創(chuàng)建家目錄
[root@web01 /server/tools/nginx-1.16.0]$ id www <===查看用戶信息
[root@web01 /server/tools/nginx-1.16.0]$ ./configure --user=www --group=www --prefix=/application/nginx-1.16.0/ --with-http_stub_status_module --with-http_ssl_module --with-pcre <===定制模塊
[root@web01 /server/tools/nginx-1.16.0]$ make <===編譯
[root@web01 /server/tools/nginx-1.16.0]$ make install <===安裝
[root@web01 /server/tools/nginx-1.16.0]$ ln -s /application/nginx-1.16.0/ /application/nginx <===創(chuàng)建軟鏈接
[root@web01 /server/tools/nginx-1.16.0]$ /application/nginx/sbin/nginx <===啟動(dòng)nginx服務(wù)
[root@web01 /server/tools/nginx-1.16.0]$ netstat -lntup|grep nginx <===查看端口
注意:
1)每一步結(jié)尾直接echo $?驗(yàn)證是否正確。返回0代表步驟正確
2)驗(yàn)證最終的安裝是否正確。
[root@web02 /server/tools/nginx-1.16.0]$ wget 10.0.0.8
--2019-04-30 17:37:41-- http://10.0.0.8/
正在連接 10.0.0.8:80... 已連接。
已發(fā)出 HTTP 請(qǐng)求,正在等待回應(yīng)... 200 OK
長(zhǎng)度:319 [text/html]
正在保存至: “index.html.1”
100%[===================================================================>] 319 --.-K/s 用時(shí) 0s
2019-04-30 17:37:41 (3.17 MB/s) - 已保存 “index.html.1” [319/319])
configure參數(shù)的作用
| 參數(shù) | 說(shuō)明 |
|---|---|
| --prefix=PATH | 路徑 |
| --user=USER | 用戶 |
| --group=GROUP | 組 |
| --with-pcre | 偽靜態(tài) |
| --with-http_stub_status_module | 狀態(tài) |
| --with-http_ssl_module | 加密 443 |
目錄下各文件說(shuō)明:
[root@web02 /application/nginx]# tree
├── conf
│ ├── fastcgi.conf #配合php接口的置參數(shù)
│ ├── fastcgi.conf.default
│ ├── fastcgi_params
│ ├── fastcgi_params.default
│ ├── koi-utf
│ ├── koi-win
│ ├── mime.types #媒體類型
│ ├── mime.types.default
│ ├── nginx.conf #主配置文件
│ ├── nginx.conf.default
│ ├── scgi_params
│ ├── scgi_params.default #和動(dòng)態(tài)服務(wù)的接口配置參數(shù)
│ ├── uwsgi_params
│ ├── uwsgi_params.default #配合Python接口的配置參數(shù)
│ └── win-utf
├── fastcgi_temp
├── html #默認(rèn)站點(diǎn)目錄。
│ ├── 50x.html
│ └── index.html #默認(rèn)的首頁(yè),10.0.0.8不指定文件,默認(rèn)加載index.html首頁(yè)。
├── logs
│ ├── access.log #訪問(wèn)日志
│ ├── error.log #Nginx錯(cuò)誤日志。
│ └── nginx.pid #進(jìn)程號(hào)對(duì)應(yīng)文件。
├── sbin
│ └── nginx #啟動(dòng)命令。