Linux之Nginx四擋的路飛(個人的學習公開)

簡介

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)下面的頁面啦

吳佳浩的個人博客
  1. 打開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)載請注明出處 --吳佳浩

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容