前言
Nginx是一款輕量級(jí)的Web服務(wù)器
龄捡、反向代理服務(wù)器
及電子郵件(IMAP/POP3)代理服務(wù)器
牢屋。其特點(diǎn)是占有內(nèi)存少,并發(fā)能力強(qiáng)收奔。中國(guó)大陸使用nginx的網(wǎng)站有:百度、京東滓玖、新浪坪哄、網(wǎng)易、騰訊势篡、淘寶等翩肌。
Nginx是由伊戈?duì)枴べ愃饕?/code>為俄羅斯訪問(wèn)量第二的Rambler.ru站點(diǎn)(俄文:Рамблер)開發(fā)的,第一個(gè)公開版本0.1.0發(fā)布于2004年10月4日禁悠。
Nginx的作用
- 發(fā)布靜態(tài)資源,(html,css\js代碼...)
- 用于做服務(wù)器反向代理念祭,實(shí)現(xiàn)服務(wù)器集群負(fù)載均衡
- nginx可以做郵件代理服務(wù)器。
下載和安裝
官網(wǎng):https://nginx.org/en/download.html
下載
在Nginx的官網(wǎng)的下載頁(yè)面中(http://nginx.org/en/download.html)碍侦,可以下載Linux粱坤、Windows的安裝包,例如我選擇的版本是1.16
瓷产,安裝包為nginx-1.16.1.tar.gz
你也可以在Linux中站玄,直接遠(yuǎn)程下載,就不需要額外上傳安裝包到Linux中了
yum install wget
wget https://nginx.org/download/nginx-1.16.1.tar.gz
- 上傳安裝包到Linux
使用FinalShell或其他客戶端工具濒旦,拽托安裝包到Linux的根目錄下的soft
目錄
安裝
- 安裝依賴包
由于Nginx使用C語(yǔ)言編寫的株旷,所以需要安裝C語(yǔ)言的編譯環(huán)境,以及正則表達(dá)式庫(kù)等第三方依賴
yum -y install pcre-devel zlib-devel openssl openssl-devel
安裝gcc編譯器依賴
yum install gcc-c++
- 解壓安裝包
我將安裝包放在根目錄下的soft
目錄下了尔邓,所以需要進(jìn)入該目錄進(jìn)行解壓晾剖,解壓成功后,當(dāng)前目錄會(huì)多了一個(gè)nginx-1.16.1
目錄
cd /soft
tar -xvf nginx-1.16.1.tar.gz
- 配置Nginx安裝目錄
進(jìn)入Nginx解壓目錄nginx-1.16.1
铃拇,指定Nginx的安裝目錄為/usr/local/nginx
钞瀑。注:--prefix
指定的目錄,就是我們安裝Nginx的目錄慷荔。
cd nginx-1.16.1
./configure --prefix=/usr/local/nginx
- 編譯和安裝
繼續(xù)在當(dāng)前目錄,進(jìn)行編譯、安裝
make & make install
目錄結(jié)構(gòu)
安裝完Nginx后显晶,我們切換到安裝目錄/usr/local/nginx
贷岸,通過(guò)tree命令打印一下目錄結(jié)構(gòu)
- 如果提示命令不存在,那么需要通過(guò)yum進(jìn)行安裝
yum install tree
- 打印結(jié)果
nginx/
├── conf
│ ├── fastcgi.conf
│ ├── 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
│ ├── uwsgi_params
│ ├── uwsgi_params.default
│ └── win-utf
├── html
│ ├── 50x.html
│ └── index.html
├── logs
├── sbin
│ └── nginx
重點(diǎn)目錄如下:
目錄/文件 | 說(shuō)明 | 備注 |
---|---|---|
conf | 配置文件的存放目錄 | |
conf/nginx.conf | Nginx的核心配置文件 | conf下有很多nginx的配置文件磷雇,我們主要操作這個(gè)核心配置文件 |
html | 存放靜態(tài)資源(html, css, ) | 部署到Nginx的靜態(tài)資源都可以放在html目錄中 |
logs | 存放nginx日志(訪問(wèn)日志偿警、錯(cuò)誤日志等) | |
sbin/nginx | 二進(jìn)制文件,用于啟動(dòng)唯笙、停止Nginx服務(wù) |
Nginx命令
Nginx中螟蒸,它的二進(jìn)制可執(zhí)行文件(nginx)存放在sbin目錄下,雖然只有一個(gè)可執(zhí)行文件崩掘,但是我們可以通過(guò)該指令配合不同的參數(shù)達(dá)到更加強(qiáng)大的功能
- 查看版本
./nginx -v
- 檢查配置文件是否正確
修改了nginx.conf核心配置文件之后七嫌,在啟動(dòng)Nginx服務(wù)之前,可以先檢查一下conf/nginx.conf
文件配置的是否有錯(cuò)誤
./nginx -t
- 啟動(dòng)
啟動(dòng)后苞慢,我們可以通過(guò)ps -ef | grep nginx
來(lái)查看nginx的進(jìn)程诵原,注意nginx啟動(dòng)后,默認(rèn)就會(huì)有2個(gè)進(jìn)程挽放。
./nginx
nginx默認(rèn)使用的是80端口绍赛,所以我們需要讓防火墻開放80端口,才能讓外部訪問(wèn)Nginx
# 開放80端口
firewall-cmd --zone=public --add-port=80/tcp --permanent
# 重載防火墻
firewall-cmd --reload
- 停止
./nginx -s stop
- 重新加載
./nginx -s reload
環(huán)境變量
nginx的的命令是存放在nginx/sbin
目錄下的辑畦,我們每次執(zhí)行nginx的命令吗蚌,都需要切換到該目錄下,不方便纯出。而配置了環(huán)境變量蚯妇,就可以在任意位置,調(diào)用Nginx命令了
環(huán)境變量文件:/etc/profile
vim /etc/profile
在PATH變量后潦刃,追加Nginx的sbin目錄
修改后侮措,需要重載配置文件,才能生效
source /etc/profile
Nginx配置文件
nginx的配置文件乖杠,存放在nginx/conf
目錄下分扎,里面有很多配置文件,而主配置文件是nginx.conf
文件胧洒,它的內(nèi)容如下(刪除了一些注釋畏吓,內(nèi)容更精簡(jiǎn))
- 全局塊、events塊卫漫、http塊中菲饼,我們經(jīng)常配置http塊
- http塊中,可以包含多個(gè)server塊列赎,每個(gè)server塊可以配置多個(gè)location塊
區(qū)域 | 職責(zé) |
---|---|
全局塊 | 配置和nginx運(yùn)行相關(guān)的全局配置 |
events塊 | 配置和網(wǎng)絡(luò)連接相關(guān)的配置 |
http塊 | 配置代理宏悦、緩存、日志記錄、虛擬主機(jī)等配置 |
# 全局塊
worker_processes 1;
# events塊
events {
worker_connections 1024;
}
# http塊
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
# server塊
server {
listen 80;
server_name localhost;
# location塊
location / {
root html;
index hello.html;
}
# location塊
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
部署靜態(tài)資源
Nginx可以作為靜態(tài)Web服務(wù)器來(lái)部署靜態(tài)資源饼煞,例如HTML源葫、CSS、JS等文件砖瞧。相對(duì)于Tomcat息堂,Nginx處理靜態(tài)資源的能力更加高效
想要部署靜態(tài)資源,只需要將靜態(tài)資源上傳到nginx\html
目錄即可块促,并且可以在nginx.conf
配置文件中荣堰,配置端口、靜態(tài)資源的目錄竭翠、默認(rèn)首頁(yè)等
server {
listen 80; #監(jiān)聽端口
server_name localhost; #服務(wù)器名稱
location / { #匹配客戶端請(qǐng)求url
root html; #指定靜態(tài)資源根目錄
index index.html; #指定默認(rèn)首頁(yè)
}
}