項目工具【Nginx的使用】

1.課程目標

目標1:掌握Nginx的安裝
目標2:掌握Nginx的靜態網站部署
目標3:理解Nginx的反向代理與負載均衡,能夠配置反向代理與負載均衡

2.Nginx的安裝與啓動

2.1什麼是Nginx

Nginx 是一款高性能的 http 服務器/反向代理服務器及電子郵件(IMAP/POP3)代理服務器。由俄羅斯的程序設計師伊戈爾·西索夫(Igor Sysoev)所開發,官方測試 nginx 能夠支支撐 5 萬併發鏈接,並且 cpu、內存等資源消耗卻非常低,運行非常穩定。

Nginx 應用場景:

  • 1、http 服務器。Nginx 是一個 http 服務可以獨立提供 http 服務。可以做網頁靜態服務器。
  • 2、虛擬主機。可以實現在一臺服務器虛擬出多個網站。例如個人網站使用的虛擬主機。
  • 3、反向代理,負載均衡。當網站的訪問量達到一定程度後,單臺服務器不能滿足用戶的請求時,需要用多臺服務器集羣可以使用 nginx 做反向代理。並且多臺服務器可以平均分擔負載,不會因爲某臺服務器負載高宕機而某臺服務器閒置的情況。

2.2 Nginx在Linux下的安裝

重新準備一臺虛擬機作爲服務器。比如IP地址爲192.168.177.129

2.2.1環境準備

1)需要安裝 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 也需要此庫。

zlib

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

yum install -y zlib zlib-devel

OpenSSL

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

yum install -y openssl openssl-devel

2.2.2 Nginx下載

官方網站下載 nginx:http://nginx.org/

2.2.3 Nginx安裝

第一步:把 nginx 的源碼包nginx-1.8.0.tar.gz上傳到 linux 系統

第二步:解壓縮

tar zxvf nginx-1.8.0.tar.gz

第三步:進入nginx-1.8.0目錄 使用 configure 命令創建一 makeFile 文件。

./configure \
--prefix=/usr/local/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

執行後可以看到Makefile文件

在這裏插入圖片描述

 ----  知識點小貼士 ---- 
Makefile是一種配置文件, Makefile 一個工程中的源文件不計數,其按類型、功能、模塊分別放在若干個
目錄中,makefile定義了一系列的規則來指定,哪些文件需要先編譯,哪些文件需要後編譯,哪些文件
需要重新編譯,甚至於進行更復雜的功能操作,因爲makefile就像一個Shell腳本一樣,其中也可以執行
操作系統的命令。

----  知識點小貼士 ----
configure參數
./configure \
--prefix=/usr \                                                        指向安裝目錄
--sbin-path=/usr/sbin/nginx \                                 指向(執行)程序文件(nginx)
--conf-path=/etc/nginx/nginx.conf \                      指向配置文件
--error-log-path=/var/log/nginx/error.log \              指向log
--http-log-path=/var/log/nginx/access.log \            指向http-log
--pid-path=/var/run/nginx/nginx.pid \                      指向pid
--lock-path=/var/lock/nginx.lock \                         (安裝文件鎖定,防止安裝文件被別人利用,或自己誤操作。)
--user=nginx \
--group=nginx \
--with-http_ssl_module \                      啓用ngx_http_ssl_module支持(使支持https請求,需已安裝openssl)
--with-http_flv_module \                       啓用ngx_http_flv_module支持(提供尋求內存使用基於時間的偏移量文件)
--with-http_stub_status_module \     啓用ngx_http_stub_status_module支持(獲取nginx自上次啓動以來的工作狀態)
--with-http_gzip_static_module \   啓用ngx_http_gzip_static_module支持(在線實時壓縮輸出數據流)
--http-client-body-temp-path=/var/tmp/nginx/client/ \ 設定http客戶端請求臨時文件路徑
--http-proxy-temp-path=/var/tmp/nginx/proxy/ \ 設定http代理臨時文件路徑
--http-fastcgi-temp-path=/var/tmp/nginx/fcgi/ \ 設定http fastcgi臨時文件路徑
--http-uwsgi-temp-path=/var/tmp/nginx/uwsgi \ 設定http uwsgi臨時文件路徑
--http-scgi-temp-path=/var/tmp/nginx/scgi \ 設定http scgi臨時文件路徑
--with-pcre 啓用pcre庫

第四步:編譯

make

第五步:安裝

make install

2.3 Nginx啓動與訪問

注意:啓動nginx 之前,將臨時文件目錄指定爲/var/temp/nginx/client, 需要在/var 下創建此 目錄

mkdir /var/temp/nginx/client -p

進入到Nginx目錄下的sbin目錄

cd /usr/local/ngiux/sbin

輸入命令啓動Nginx

./nginx

啓動後查看進程

ps aux|grep nginx

在這裏插入圖片描述

地址欄輸入虛擬機的IP即可訪問(默認爲80端口)

關閉 nginx:

./nginx -s stop

或者

./nginx -s quit

重啓 nginx:
1、先關閉後啓動。
2、刷新配置文件:

./nginx -s reload

3.Nginx靜態網站部署

3.1 靜態網站的部署
將/資料/靜態頁面/index目錄下的所有內容 上傳到服務器的/usr/local/nginx/html下即可訪問

在這裏插入圖片描述

3.2 配置虛擬主機

虛擬主機,也叫“網站空間”,就是把一臺運行在互聯網上的物理服務器劃分成多個“虛擬”服務器。虛擬主機技術極大的促進了網絡技術的應用和普及。同時虛擬主機的租用服務也成了網絡時代的一種新型經濟形式。

3.2.1 端口綁定

(1)上傳靜態網站:

將/資料/靜態頁面/index目錄上傳至  /usr/local/nginx/index下
將/資料/靜態頁面/regist目錄上傳至  /usr/local/nginx/regist下

(2)修改Nginx 的配置文件:/usr/local/nginx/conf/nginx.conf

server {
        listen       81; # 監聽的端口
        server_name  localhost; # 域名或ip
        location / {	# 訪問路徑配置
            root   index;# 根目錄
            index  index.html index.htm; # 默認首頁
        }
        error_page   500 502 503 504  /50x.html;	# 錯誤頁面
        location = /50x.html {
            root   html;
        }
    }


     server {
        listen       82; # 監聽的端口
        server_name  localhost; # 域名或ip
        location / {	# 訪問路徑配置
            root   regist;# 根目錄
            index  regist.html; # 默認首頁
        }
        error_page   500 502 503 504  /50x.html;	# 錯誤頁面
        location = /50x.html {
            root   html;
        }

        
    }

(3)訪問測試:

地址欄輸入http://192.168.177.129/:81 可以看到首頁面
地址欄輸入http://192.168.177.129/:82 可以看到註冊頁面

3.2.2 域名綁定

什麼是域名:

域名(Domain Name),是由一串用“點”分隔的字符組成的Internet上某一臺計算機或計算機組的名稱,用於在數據傳輸時標識計算機的電子方位(有時也指地理位置,地理上的域名,指代有行政自主權的一個地方區域)。域名是一個IP地址上有“面具” 。域名的目的是便於記憶和溝通的一組服務器的地址(網站,電子郵件,FTP等)。域名作爲力所能及難忘的互聯網參與者的名稱。域名按域名系統(DNS)的規則流程組成。在DNS中註冊的任何名稱都是域名。域名用於各種網絡環境和應用程序特定的命名和尋址目的。通常,域名錶示互聯網協議(IP)資源,例如用於訪問因特網的個人計算機,託管網站的服務器計算機,或網站本身或通過因特網傳送的任何其他服務。世界上第一個註冊的域名是在1985年1月註冊的。

域名級別:

(1)頂級域名

頂級域名又分爲兩類:

一是國家頂級域名(national top-level domainnames,簡稱nTLDs),200多個國家都按照ISO3166國家代碼分配了頂級域名,例如中國是cn,美國是us,日本是jp等;

二是國際頂級域名(international top-level domain names,簡稱iTDs),例如表示工商企業的 .Com .Top,表示網絡提供商的.net,表示非盈利組織的.org,表示教育的.edu,以及沒有限制的中性域名如.xyz等。大多數域名爭議都發生在com的頂級域名下,因爲多數公司上網的目的都是爲了贏利。但因爲自2014年以來新頂級域名的發展,域名爭議案件數量增長幅度越來越大[5] 。爲加強域名管理,解決域名資源的緊張,Internet協會、Internet分址機構及世界知識產權組織(WIPO)等國際組織經過廣泛協商, 在原來三個國際通用頂級域名:(com)的基礎上,新增加了7個國際通用頂級域名:firm(公司企業)、store(銷售公司或企業)、Web(突出WWW活動的單位)、arts(突出文化、娛樂活動的單位)、rec (突出消遣、娛樂活動的單位)、info(提供信息服務的單位)、nom(個人),並在世界範圍內選擇新的註冊機構來受理域名註冊申請。

例如:baidu.com

(2)二級域名

二級域名是指頂級域名之下的域名,在國際頂級域名下,它是指域名註冊人的網上名稱,例如 ibm,yahoo,microsoft等;在國家頂級域名下,它是表示註冊企業類別的符號,
例如.top,com,edu,gov,net等。

中國在國際互聯網絡信息中心(Inter NIC) 正式註冊並運行的頂級域名是CN,這也是中國的一級域名。在頂級域名之下,中國的二級域名又分爲類別域名和行政區域名兩類。類別域名共7個, 包括用於科研機構的ac;用於工商金融企業的com、top;用於教育機構的edu;用於政府部門的 gov;用於互聯網絡信息中心和運行中心的net;用於非盈利組織的org。而行政區域名有34個,分別對應於中國各省、自治區和直轄市。

例如:map.baidu.com

(3)三級域名

三級域名用字母( A~Z,a~z,大小寫等)、數字(0~9)和連接符(-)組成, 各級域名之間用實點(.)連接,三級域名的長度不能超過20個字符。如無特殊原因,建議採用申請人的英文名(或者縮寫)或者漢語拼音名 (或者縮寫) 作爲三級域名,以保持域名的清晰性和簡潔性。

例如:
item.map.baidu.com

域名與IP綁定:

一個域名對應一個 ip 地址,一個 ip 地址可以被多個域名綁定。

本地測試可以修改 hosts 文件(C:\Windows\System32\drivers\etc)

可以配置域名和 ip 的映射關係,如果 hosts 文件中配置了域名和 ip 的對應關係,不需要走dns 服務器。

192.168.177.129	www.hmtravel.com
192.168.177.129	regist.hmtravel.com

做好域名指向後,修改nginx配置文件

server {
    listen       80;
    server_name  www.hmtravel.com;
    location / {
        root   cart;
        index  cart.html;
    }
}
server {
    listen       80;
    server_name  regist.hmtravel.com;
    location / {
        root   search;
        index  search.html;
    }
}

執行以下命令,刷新配置

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

測試:

地址欄輸入http://www.hmtravel.com/

在這裏插入圖片描述

地址欄輸入http://regist.hmtravel.com/
在這裏插入圖片描述

4.Nginx反向代理與負載均衡

4.1 反向代理

4.1.1 什麼是反向代理

反向代理(Reverse Proxy)方式是指以代理服務器來接受internet上的連接請求,然後將請求轉發給內部網絡上的服務器,並將從服務器上得到的結果返回給internet上請求連接的客戶端,此時代理服務器對外就表現爲一個反向代理服務器。
首先我們先理解正向代理,如下圖:

在這裏插入圖片描述
正向代理是針對你的客戶端,而反向代理是針對服務器的,如下圖
在這裏插入圖片描述
在這裏插入圖片描述

4.1.2 配置反向代理-準備工作

(1) 將travel案例部署到tomcat中(ROOT目錄),上傳到服務器。

(2)啓動TOMCAT,輸入網址http://192.168.177.129:8080 可以看到網站首頁
4.1.3 配置反向代理

(1)在Nginx主機修改 Nginx配置文件

   upstream tomcat-travel{
	   server 192.168.177.129:8080;
    }

    server {
        listen       80; # 監聽的端口
        server_name  www.hmtravel.com; # 域名或ip
        location / {	# 訪問路徑配置
            # root   index;# 根目錄
	    proxy_pass http://tomcat-travel;
            index  index.html index.htm; # 默認首頁
        }
}

(2)重新啓動Nginx 然後用瀏覽器測試:http://www.hmtravel.com (此域名須配置域名指向)

4.2 負載均衡

4.2.1 什麼是負載均衡

負載均衡 建立在現有網絡結構之上,它提供了一種廉價有效透明的方法擴展網絡設備服務器的帶寬、增加吞吐量、加強網絡數據處理能力、提高網絡的靈活性和可用性。

負載均衡,英文名稱爲Load Balance,其意思就是分攤到多個操作單元上進行執行,例如Web服務器、FTP服務器、企業關鍵應用服務器和其它關鍵任務服務器等,從而共同完成工作任務。

4.2.2 配置負載均衡-準備工作

(1)將剛纔的存放工程的tomcat複製三份,修改端口分別爲8080 ,8081,8082 。

(2)分別啓動這三個tomcat服務。

(3)爲了能夠區分是訪問哪個服務器的網站,可以在首頁標題加上標記以便區分。

4.2.3 配置負載均衡

修改 Nginx配置文件:

upstream tomcat-travel {
	   server 192.168.177.129:8080;
	   server 192.168.177.129:8081;
	   server 192.168.177.129:8082;
    }

server {
    listen       80; # 監聽的端口
    server_name  www.hmtravel.com; # 域名或ip
    location / {	# 訪問路徑配置
        # root   index;# 根目錄
    proxy_pass http://tomcat-travel;

        index  index.html index.htm; # 默認首頁
    }
    error_page   500 502 503 504  /50x.html;	# 錯誤頁面
    location = /50x.html {
        root   html;
    }
}

地址欄輸入http:// www.hmtravel.com / 刷新觀察每個網頁的標題,看是否不同。

經過測試,三臺服務器出現的概率各爲33.3333333%,交替顯示。

如果其中一臺服務器性能比較好,想讓其承擔更多的壓力,可以設置權重。

比如想讓NO.1出現次數是其它服務器的2倍,則修改配置如下:

upstream tomcat-travel {
   server 192.168.177.129:8080;
   server 192.168.177.129:8081 weight=2;
   server 192.168.177.129:8082;
}

經過測試,每刷新四次,有兩次是8081

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章