簡介
Nginx 是一個很強大的高性能Web和反向代理服務(wù),它具有很多非常優(yōu)越的特性:
在連接高并發(fā)的情況下,Nginx是Apache服務(wù)不錯的替代品:Nginx在美國是做虛擬主機生意的老板們經(jīng)常選擇的軟件平臺之一。能夠支持高達 50,000 個并發(fā)連接數(shù)的響應(yīng),感謝Nginx為我們選擇了 epoll and kqueue作為開發(fā)模型。
操作
| Nginx的基本操作 | |
|---|---|
| 解釋 | 命令 |
| 安裝 | yum install nginx |
| 啟動 | service nginx start |
| 停止 | service nginx stop |
| 重載 | service nginx reload |
| 重啟 | service nginx restart |
1、添加CentOS7 Nginx yum 資源庫
sudo rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
2、sudo yum install -y nginx
[wujiahao@host ~]# sudo yum install -y nginx
已加載插件:fastestmirror
base | 3.6 kB 00:00:00
epel | 3.2 kB 00:00:00
extras | 3.4 kB 00:00:00
nginx | 2.9 kB 00:00:00
updates | 3.4 kB 00:00:00
(1/8): epel/x86_64/group_gz | 88 kB 00:00:00
(2/8): base/7/x86_64/group_gz | 166 kB 00:00:00
(3/8): epel/x86_64/updateinfo | 934 kB 00:00:00
(4/8): extras/7/x86_64/primary_db | 204 kB 00:00:00
(5/8): epel/x86_64/primary | 3.6 MB 00:00:00
(6/8): base/7/x86_64/primary_db | 5.9 MB 00:00:01
(7/8): updates/7/x86_64/primary_db | 6.0 MB 00:00:00
(8/8): nginx/x86_64/primary_db | 35 kB 00:00:02
Determining fastest mirrors
epel 12741/12741
正在解決依賴關(guān)系
--> 正在檢查事務(wù)
---> 軟件包 nginx.x86_64.1.1.14.0-1.el7_4.ngx 將被 安裝
--> 解決依賴關(guān)系完成
依賴關(guān)系解決
=======================================================================================================================================================================
Package 架構(gòu) 版本 源 大小
=========================================================================================================================================================================
正在安裝:
nginx x86_64 1:1.14.0-1.el7_4.ngx nginx 750 k
事務(wù)概要
=========================================================================================================================================================================
安裝 1 軟件包
總下載量:750 k
安裝大?。?.6 M
Downloading packages:
nginx-1.14.0-1.el7_4.ngx.x86_64.rpm | 750 kB 00:00:56
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
警告:RPM 數(shù)據(jù)庫已被非 yum 程序修改。
正在安裝 : 1:nginx-1.14.0-1.el7_4.ngx.x86_64 1/1
----------------------------------------------------------------------
Thanks for using nginx!
Please find the official documentation for nginx here:
* http://nginx.org/en/docs/
Please subscribe to nginx-announce mailing list to get
the most important news about nginx:
* http://nginx.org/en/support.html
Commercial subscriptions for nginx are available on:
* http://nginx.com/products/
----------------------------------------------------------------------
驗證中 : 1:nginx-1.14.0-1.el7_4.ngx.x86_64 1/1
已安裝:
nginx.x86_64 1:1.14.0-1.el7_4.ngx
完畢!
3、firewall-cmd --zone=public --add-port=80/tcp --permanent 關(guān)閉防火墻
如果是阿里云或者公司的服務(wù)器的話請在網(wǎng)絡(luò)安全組當中配置開啟80端口
4.(概念)配置NGINX的虛擬主機
Nginx配置文件常見結(jié)構(gòu)的從外到內(nèi)依次是「http」「server」「location」等等,缺省的繼承關(guān)系是從外到內(nèi),也就是說內(nèi)層塊會自動獲取外層塊的值作為缺省值。
5.[wujiahao@host ~]# service nginx start
在瀏覽器輸入你的公網(wǎng)IP地址就會出現(xiàn)下面的頁面啦

- 打開
vim /etc/nginx/conf.d/default.conf的文件
這就是我們nginx的默認基礎(chǔ)配置啦
這里跟Apache的配置類似都是采用讀取一個個模塊方式加載
盡量保持/etc/nginx/nginx.conf主文件的清晰
/etc/nginx/nginx.conf文件中的include /etc/nginx/conf.d/*.conf;
意思就是默認導入conf.d下面所以后綴為.conf的文件都導入到nginx 的配置當中
至此你應(yīng)該明白不要主文件當中做配置
7.那么接下來讓我看看到底怎么配置一個自己的虛擬主機吧
? ? 1) 首先復(fù)制一份默認文件 改個名字我們就在這個文件當中修改我們自己的配置
[wujiahao@host ~]# vim /etc/nginx/nginx.conf
[wujiahao@host ~]# cd /etc/nginx/conf.d/
[wujiahao@host conf.d]# cp default.conf first.conf
[wujiahao@host conf.d]# vim first.conf
刪除文件內(nèi),所有的內(nèi)容重寫如下
server {
listen 80; #監(jiān)聽的端口80
server_name wujiahao.com; #域名地址
root /static/www/; #站點的根目錄
index index.html index.htm; #默認訪問 index index.html index.htm 文件
}
保存退出
重啟nginx
[wujiahao@host conf.d]#service nginx reload
至此一個簡單的 nginx的配置就OK了
打開瀏覽器輸入 wujiahao.com 就可以看到你的指定/static/www/的目錄下的index文件啦
8.下面就讓我來給大家介紹 nginx流行原因之一反向代理,簡而言之就是你以為你訪問的是47.101.200.215 這臺機器其實你訪問的是48.122.201.215 這臺機器 這就是反向代理的最直觀的意思 如下圖 就是反向代理和負載均衡的示意

那么現(xiàn)在讓我們來修改一下first.conf文件實現(xiàn)nginx的反向代理吧
[wujiahao@host ~]# vim /etc/nginx/nginx.conf
[wujiahao@host ~]# cd /etc/nginx/conf.d/
[wujiahao@host conf.d]# cp default.conf first.conf
[wujiahao@host conf.d]# vim first.conf
upstream haoge { #被代理的對象
server 118.98.105.129:80; #被代理的實際地址,請求最終最終都會達到這里
}
server {
listen 80;
linsten 9999; #nginx 是可以配置多個端口的,所以這里展示80 和9999端口演示
server_name wujiahao1.com wujiahao2.com; #這里也是可以配置多個域名進行訪問的
root /static/www; #站點根目錄
index index.html index.htm; #默認訪問根目錄下的index文件
access_log /etc/nginx/log/access_haoge.log haoge; #指定日志輸出的格式可以自定義
location / {
proxy_set_header Host www.wujiahao.com; #設(shè)置代理服務(wù)器的頭部域名信息因為很多網(wǎng)站可能會設(shè)置只允許域名訪問
proxy_pass http://haoge; #將請求轉(zhuǎn)發(fā)到haoge 也就是上面定義的upstream的定義的主機上
}
}
[wujiahao@host conf.d]#service nginx reload
你會發(fā)現(xiàn)你看到的其實是118.98.105.129:80的這個主機上面的內(nèi)容 你的請求已經(jīng)被轉(zhuǎn)發(fā)
9.說完反向代理 我們再來聊聊負載均衡 相信很多小伙伴們都不陌生
很多大型的網(wǎng)站流量很多 需要做到分流 所以這個時候負載均衡就是必不可少的了那么現(xiàn)在然我們來看看負載均衡的配置吧
[wujiahao@host ~]# vim /etc/nginx/nginx.conf
[wujiahao@host ~]# cd /etc/nginx/conf.d/
[wujiahao@host conf.d]# cp default.conf first.conf
[wujiahao@host conf.d]# vim first.conf
upstream haoge { #被代理的對象 此時這里是兩個主機地址 如果不分配權(quán)重那么將用戶的請求將被1:1的分發(fā)到兩個服務(wù)器并返回不同的內(nèi)容 也就是說你不設(shè)置權(quán)重 就會兩個交的返回兩個主機上的內(nèi)容
server 118.98.105.129:80 weight=5;
server 116.89.103.203:80 weight=1; #這里的weight代表權(quán)重即是比例的意思的 現(xiàn)在這樣代表 server1被訪問五次之后server2才會被訪問一次 依次5:1的比例交替執(zhí)行
}
server {
listen 80;
linsten 9999; #nginx 是可以配置多個端口的,所以這里展示80 和9999端口演示
server_name wujiahao1.com wujiahao2.com; #這里也是可以配置多個域名進行訪問的
root /static/www; #站點根目錄
index index.html index.htm; #默認訪問根目錄下的index文件
access_log /etc/nginx/log/access_haoge.log haoge; #指定日志輸出的格式可以自定義
location / {
proxy_set_header Host www.wujiahao.com; #設(shè)置代理服務(wù)器的頭部域名信息因為很多網(wǎng)站可能會設(shè)置只允許域名訪問
proxy_pass http://haoge; #將請求轉(zhuǎn)發(fā)到haoge 也就是上面定義的upstream的定義的主機上
}
}
[wujiahao@host conf.d]#service nginx reload
重啟之后測試一下刷新6次就只有一次 server2的內(nèi)容 說明權(quán)重設(shè)置成功了
至此nginx的基本功能 虛擬主機 反向代理 負載均衡就講完了
10.最后 再給大家補充一個調(diào)試的調(diào)試功能 其實也是和我們寫代碼一樣的 寫著寫著總會出錯 那么就需要進行調(diào)試,那么現(xiàn)在讓我們來看看 如和調(diào)試吧
[wujiahao@host ~]# vim /etc/nginx/nginx.conf
[wujiahao@host ~]# cd /etc/nginx/conf.d/
[wujiahao@host conf.d]# cp default.conf first.conf
[wujiahao@host conf.d]# vim first.conf
server {
listen 80;
linsten 9999;
add_header Content-Type "text/plain;charset=utf-8"; #因為瀏覽器默認解析html 所以這里加上協(xié)議頭方便解析我們返回的域名
return 200 "$http_host"; #返回當前訪問的域名顯示在瀏覽器
server_name wujiahao1.com wujiahao2.com;
root /static/www;
index index.html index.htm;
access_log /etc/nginx/log/access_haoge.log haoge;
}
[wujiahao@host conf.d]#service nginx reload
當你打開瀏覽器 通過域名訪問就可以直接返回你到底訪問的是哪個域名啦
調(diào)試完記得注釋不讓請求可能會出錯
如果有什么疑問請下方留言 今天的nginx 就說到這里啦
如果轉(zhuǎn)載請注明出處 --吳佳浩