nginx反向代理、負載均衡配置與linux環境下的安裝及通過ip和域名訪問nginx

林海靜發表於2018-10-11

本文主題

一、什麼是nginx

二、nginx的應用場景

三、linux環境下nigix的安裝

四、nginx配置虛擬機器(ip、域名)

五、nginx實現反向代理

六、nginx實現負載均衡


一、什麼是nginx

1、http伺服器(通過nginx配置檔案配置,將靜態資源放在nginx目錄中或任意磁碟路徑下即可訪問)/反向代理伺服器及電子郵件代理伺服器

2、nginx未出現之前有Apache來做反向代理和負載均衡

3、開源,C語言開發

4、執行穩定,效能好,支援高併發,支援5萬併發,而tomcat支援500併發

二、nginx的應用場景

1、http伺服器。可以獨立提供http服務、訪問靜態資源,如圖片,html;

2、虛擬主機。實現在一臺伺服器虛擬出多個網站,共用80埠;

3、反向代理,負載均衡。反向代理是指通過一臺nginx達到訪問叢集伺服器的目的;負載均衡是指多臺伺服器可以平均分擔負載,不會出現某臺伺服器因負載過高而當機或某臺伺服器負載過低而閒置;

三、linux環境下nginx的安裝

1、上傳nginx原始碼包並解壓

1)用ftp工具上傳ngnix包到/myFile/tool目錄下

悄悄話此為nginx的原始碼包,在linux系統中安裝時需要先編譯再安裝,即先執行make命令,再執行make install命令

2)解壓

執行如下命令,表示解壓到/myFile/programFiles/目錄下

tar zxf nginx-1.8.0.tar.gz  -C  /myFile/programFiles/

2、 nginx預安裝環境

先執行如下四條命令:

1)gcc安裝

安裝nginx需要先將官網下載的原始碼進行編譯,編譯依賴gcc環境,如果沒有gcc環境,需要安裝gcc。命令:yum install gcc-c++

2)PCRE安裝

PCRE(Perl Compatible Regular Expressions)是一個Perl庫,包括 perl 相容的正規表示式庫。nginx的http模組使用pcre來解析正規表示式,所以需要在linux上安裝pcre庫。命令:yum install -y pcre pcre-devel

悄悄話:pcre-devel是使用pcre開發的一個二次開發庫。nginx也需要此庫。

3)zlib安裝

zlib庫提供了很多種壓縮和解壓縮的方式,nginx使用zlib對http包的內容進行gzip,所以需要在linux上安裝zlib庫。

命令:yum install -y zlib zlib-devel

4)openssl安裝

OpenSSL 是一個強大的安全套接字層密碼庫,囊括主要的密碼演算法、常用的金鑰和證書封裝管理功能及SSL協議,並提供豐富的應用程式供測試或其它目的使用。nginx不僅支援http協議,還支援https(即在ssl協議上傳輸http),所以需要在linux安裝openssl庫。命令:yum install -y openssl openssl-devel

3、基礎配置

1)在/var下建立temp及nginx目錄,否則啟動會報錯

2)在nginx解壓包/myFile/programFiles/nginx-1.8.0目錄下執行如下配置命令

悄悄話1:./configure --help查詢詳細引數

悄悄話2:以下配置中第二行 【  --prefix=/myFile/programFiles/nginx \ 】   表示要nginx將要編譯安裝的目錄

./configure \

--prefix=/myFile/programFiles/nginx \        

--pid-path=/var/run/nginx/nginx.pid \

--lock-path=/var/lock/nginx.lock \

--error-log-path=/var/log/nginx/error.log \

--http-log-path=/var/log/nginx/access.log \

--with-http_gzip_static_module \

--http-client-body-temp-path=/var/temp/nginx/client \

--http-proxy-temp-path=/var/temp/nginx/proxy \

--http-fastcgi-temp-path=/var/temp/nginx/fastcgi \

--http-uwsgi-temp-path=/var/temp/nginx/uwsgi \

--http-scgi-temp-path=/var/temp/nginx/scgi

4)編譯安裝

nginx解壓包/myFile/programFiles/nginx-1.8.0目錄下執行原始碼編譯命令:make 

編譯完成後執行make install 進行安裝

到安裝目錄/myFile/programFiles/下看是否存在nginx目錄,存在即表示安裝成功

悄悄話:nginx安裝完成的目錄解析

4、啟動

進入/myFile/programFiles/nginx/sbin目錄下,執行命令./nginx

[root@linhaijing sbin]# ./nginx

檢視程式:ps aux|grep nginx

5、停止

 進入/myFile/programFiles/nginx/sbin目錄下,執行命令./nginx -s stop

或者使用kill 程式號也可以正常關閉 

6、nginx開機狀態下修改配置檔案,快速重啟(重新整理配置檔案)

[root@linhaijing sbin]# ./nginx -s reload

7、瀏覽器Http訪問

悄悄話:正常訪問http伺服器通過ip:埠號或者域名來訪問;http伺服器預設埠號為80,所以可以省略不寫,直接通過ip訪問

出現如下圖所示則表示nginx安裝和啟動成功

四(一)、nginx配置虛擬機器--通過埠來區分不同的虛擬主機(內網用的較多)

即通過http://ip:埠號的方式來訪問不同的虛擬主機

悄悄話:vi環境塊複製貼上:(1)shit+v(V)選中一行,按上下箭頭複製上一行或下一行(2)y:複製(3)p:貼上(4)u:撤退

1)進入編輯/myFile/programFiles/nginx/conf/nginx.conf檔案

2) 新增一個虛擬主機即server

 內容如下:

  server {
        listen       81;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            root   html81;
            index  index.html index.htm;
        }

    }

 3)測試新增的虛擬主機是否能訪問成功

複製html81目錄

 修改index.html檔案內容,用於區分80埠歡迎頁

4)在目錄/myFile/programFiles/nginx/sbin下執行命令./nginx -s reload命令重新載入修改的配置檔案 

5)瀏覽器訪問

顯示為修改的內容,即表示虛擬主機新增成功! 

四(二)、nginx配置虛擬機器--通過域名來訪問不同的虛擬主機(面向外網)

1)進入編輯/myFile/programFiles/nginx/conf/nginx.conf檔案

新增兩個server節點:

此處我們嘗試攔截:http://www.sohu.com網站http://www.cnblogs.com網站

注意此測試攔截的網站協議為http,例如如果訪問https://www.cnblogs.com則會攔截失敗。但可以在nginx.conf檔案中配置https協議下的server進行攔截。

     server {
        listen       80;
        server_name  www.sohu.com;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            root   html-sohu;
            index  index.html index.htm;
        }

    }

     server {
        listen       80;
        server_name  www.cnblogs.com;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            root   html-cnblogs;
            index  index.html index.htm;
        }

    }

 如圖:

2)新增nginx目錄下html-sohu和html-cnblogs目錄,並修改歡迎頁,方便檢視

如圖 :

3)在目錄/myFile/programFiles/nginx/sbin下執行命令./nginx -s reload命令重新載入修改的配置檔案 

4)本機配置hosts檔案,新增nginx所在伺服器ip和域名的對映

Windows 下hosts路徑為:C:\Windows\System32\drivers\etc

新增如圖所示域名和ip的對映關係並儲存

悄悄話:為什麼要在本地配置hosts對映?因為本地配置了hosts後會攔截網路上DNS的解析,並跳轉到指定的伺服器。

5)瀏覽器測試

 則表示通過域名的方式訪問成功!

五、nginx實現反向代理

1、基礎概念

1.1代理伺服器:轉發請求,再講請求的到內容轉發回來,相當於翻牆;只起請求和轉發的作用,不參與請求內容的實現

1.2、正向代理:作用於客戶端,接收使用者的請求,得到請求的結果後轉發給使用者

1.3、反向代理:作用於服務端,當使用域名訪問時,決定到底哪臺伺服器來提供服務。反向代理伺服器處於公網之中,伺服器處於內網之中,當有請求時先訪問代理伺服器,這樣也具有安全性;

1.4 本測試原理:使用者的一個域名請求傳送到nginx,nginx負責將請求轉發給對應的伺服器,再將結果返回給使用者

2、圖示

3、安裝

3.1 上傳apache-tomcat-8.0.53.tar.gz到linux的/myFile/tool目錄

3.2  解壓到/myFile/programFiles/目錄下

[root@linhaijing tool]# tar zxf apache-tomcat-8.0.53.tar.gz -C /myFile/programFiles/

如圖:

3.3  重新命名為tomcat01 

[root@linhaijing programFiles]# mv apache-tomcat-8.0.53/ tomcat01 

3.4 複製一份命名為tomcat02

[root@linhaijing programFiles]# cp tomcat01/ tomcat02 -r

 現如下圖所示:

3.5  修改tomcat02的埠號,區別於tomcat01

編輯配置檔案:tomcat02/conf/server.xml ,修改以下三處埠號,分別加1即可

儲存退出!

3.6 修改tomcat01和tomcat02歡迎頁內容,便於區分

vim tomcat01/webapps/ROOT/index.jsp

vim tomcat02/webapps/ROOT/index.jsp  


 

3.7 啟動tomcat

3.8 測試是否能訪問到tomcat

3.9 配置本地hosts 

配置www.test01.com和www.test02.com到nginx伺服器的對映

3.10 配置nginx

vim nginx/conf/nginx.conf

內容如下:

   upstream tomcat01{
        server 192.168.25.128:8080;
   }
    upstream tomcat02{
        server 192.168.25.128:8081;
   }

     server {
        listen       80;
        server_name  www.test01.com;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            proxy_pass http://tomcat01;
            index  index.html index.htm;
        }

    }

     server {
        listen       80;
        server_name  www.test02.com;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            proxy_pass  http://tomcat02;
            index  index.html index.htm;
        }

    }

 3.11 啟動nginx或者重新整理nginx

進入nginx/sbin目錄

啟動nginx

[root@linhaijing programFiles]# ./nginx 

重新整理nginx 

[root@linhaijing programFiles]# ./nginx -s reload

3.12 用域名測試訪問

 

表示nginx反向代理配置成功!

六、nginx實現負載均衡

1、基礎概念 

1.1 負載均衡:併發數(負載)很多時,nginx根據伺服器的效能分配合適的請求數量到相應的伺服器(tomcat等)上

1.2 負載均衡適用於伺服器是叢集模式的情況

1.3 作用:處理高併發

1.4 本測試原理:一臺nginx伺服器對應兩臺tomcat伺服器,nginx根據規則分配請求到tomcat伺服器上,將請求均分給伺服器;同時,可設定權重,來決定哪臺伺服器可以處理更多的請求

2、安裝

2.1 複製一個tomcat03

 2.2 修改埠號,不同於tomcat01和tomcat02

2.3 修改歡迎頁,便於區分tomcat01和tomcat02

2.4 啟動tomcat03

2.5 測試是否啟動成功

 2.6 修改nginx的配置檔案,新增一個server,即tomcat03的ip和埠號

       新增一個server表示,nginx反向代理對應了兩臺伺服器,此時nginx接收到請求後會根據規則決定使用那臺伺服器進行相應,即體現了nginx實現了負載均衡的功能。

[root@linhaijing programFiles]# vim nginx/conf/nginx.conf

2.7 瀏覽器測試,按住ctrl+F5鍵進行重新整理,可發現一次訪問8080埠,接著一次訪問8082埠,如此迴圈

2.8 如果某臺伺服器效能較好,可手動配置給與其較高的訪問量

配上weight,即權重的比值,這樣埠為8082的伺服器處理請求的數量就要多一些

2.9 再次reload nginx後,衝去步驟2.7,ctrl+F5重新整理瀏覽器,發現8082的頁面出現的次數多一些。 

相關文章