Nginx簡單安裝與配置(學習)

Nginx

什麼是Nginx(what) ?

  • Nginx(“engine x”) 是一個開源的高性能的Http和反向代理服務軟件。
  • nginx因具有高併發(特別是靜態資源),佔用系統資源少等特性,且功能豐富而逐漸變得流行。

Nginx的功能(爲何要使用Nginx(why))?

反向代理

  • 正向代理
    客戶端指定目標服務器,而中間代理只是起到轉發的作用。客戶端需要配置代理服務器地址。正向代理最大的特點是客戶端明確要訪問的服務端的地址,對於服務端來說,屏蔽了客戶端或者隱藏了真實客戶端的地址。(如下圖所示)

    正向代理

  • 反向代理
    客戶端指向代理服務器,由反向代理對客戶端的請求進行轉發。即服務端對於客戶端是不可
    見的。暴露的是代理服務器ip,隱藏真實服務器的ip。可以在一定程度上防禦黑客攻擊。(如下圖所示)

反向代理

  • nginx能夠提供反向代理功能,而且與專業的代理軟件相比,nginx部署起來更爲簡單,方便。

負載均衡

  • 當一臺服務器無法滿足高併發要求時,我們可以通過增加服務器的數量來提高併發量。這時請求就不知道到底該發往哪個服務器,於是我們需要一個額外的服務器來將這些負載(請求)“均勻”的
    分發到不同的服務器。
  • 將服務器收到的請求按照一定的規則進行分發的過程其實就是負載均衡。

動靜分離

  • 以前我們都是把動態資源和靜態資源放在同一個服務器中,這其實給同一臺服務器增加了很多的負擔,
    也降低了響應速度。因此我們可以將靜態資源和動態資源分別放到不同的服務器,通過nginx將不同的
    資源請求分發到不同的服務器,從而提高響應速度。

高可用

  • 簡單說:當nginx服務器掛掉後,另一臺nginx服務器能夠頂替,保證能夠繼續提供服務

郵件代理


Nginx的應用現狀

Nginx 已經在俄羅斯最大的門戶網站── Rambler Media(www.rambler.ru)上運行了3年時間,同時俄羅斯超過20%的虛擬主機平臺採用Nginx作爲反向代理服務器。在國內,已經有 淘寶、新浪博客、新浪播客、網易新聞、六間房、56.com、Discuz!、水木社區、豆瓣、YUPOO、海內、迅雷在線 等多家網站使用 Nginx 作爲Web服務器或反向代理服務器。


怎麼用?(how)

1.安裝(安裝方式有很多)

安裝nginx需要依賴第三方庫

  • 安裝pcre依賴
    a. wget https://ftp.pcre.org/pub/pcre/pcre-8.37.tar.gz
    b. tar -xvf pcre-8.37.tar.gz
    c. 進入解壓後的目錄,然後執行./configure
    d. 然後執行make && make install (編譯然後安裝)
    e. 安裝完成後,可以使用pcre-config --version查看版本
  • 安裝其他依賴(zlib和openssl)
    a. yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel(yum這個命令需要看操作系統類型,如果可以,這個命令就直接將zlib和openssl全部安裝好)
    b. wget http://www.zlib.net/zlib-1.2.11.tar.gz ,其餘過程同pcre安裝。

安裝nginx

  • 先下載nginx安裝包,在linux中新建一個文件夾,然後使用wget命令下載(可進入官網自選版本): wget http://nginx.org/download/nginx-1.12.2.tar.gz
  • 解壓 tar -xvf nginx…
  • 進入解壓目錄,然後執行./configure
  • 執行make && make install
  • 安裝成功後,進入/usr/local/目錄會發現有一個nginx目錄,然後該目錄裏面有一個sbin目錄,裏面有啓動腳本

2.啓動nginx

  • 進入/usr/local/nginx/sbin目錄,然後執行./nginx即可,有可能80端口已經被佔用,則需要修改配置文件。
  • 啓動之後,可以在瀏覽器中輸入ip:端口號訪問到nginx主頁,端口號就是配置文件中的端口號,如果沒改的話是80。注意服務器對應的端口號需要開放(防火牆)
  • 圖片所示是配置文件中Server塊端口號修改爲6379的結果

nginx歡迎頁

3.nginx常用命令(需進入nginx的sbin目錄)

  • 查看nginx版本號: ./nginx -v
  • 開啓nginx: ./nginx
  • 關閉nginx: ./nginx -s stop
  • 重加載: ./nginx -s reload

nginx配置文件

nginx配置文件位置:/usr/local/nginx/conf/nginx.conf

nginx配置文件組成

  • 全局塊 :主要有進程數目設置(w ork_process),用於進行nginx全局信息的配置。
  • events塊: 主要影響nginx服務器與用戶的網絡連接。常用的設置包括是否允許同時接受多個網絡連接,每個worker_processer可以同時支持的最大連接數(worker_connections)。
  • http塊(配置最頻繁的部分),包括http全局塊和server塊。Server塊包括Server全局塊和location塊。 http塊中可包含一個或多個Server塊,每個Server塊中又可有一個或多個location塊。 server塊用於進行服務器訪問信息的配置,location塊用於進行訪問路由的配置
  • upstream:用於進行負載均衡的配置

nginx配置實例

nginx配置反向代理實例一

  • **目標效果:**在url欄輸入目標服務器的ip+6379端口號,然後可以訪問到該服務器上的8080端口號對應的tomcat歡迎頁(服務器有限)

  • 步驟如下:
    a. 配置好tomcat,訪問ip+8080能夠到達tomcat歡迎頁

    tomcat歡迎頁

    b. 修改nginx的配置文件:

    case1

​ c. 重啓nginx,瀏覽器輸入相應url,效果如下: 反向代理效果圖

nginx配置反向代理實例二

  • 目標效果:
訪問 域名:9000/edu/  直接跳轉到 域名:8080
訪問 域名:9000/vod/  直接跳轉到 域名:9080 
比如:訪問http://118.66.66.66:9000/edu/,直接跳轉到 http://118.66.66.66:8080
    若訪問http://118.66.66.66:9000/vod/,直接跳轉到 http://118.66.66.66:9080
  • 準備工作:
1.準備兩個Tomcat服務器,一個8080端口,一個9080端口
2.在兩個服務器目錄下分別創建兩個文件夾edu 和 vod ,然後放一個測試頁面進去(a.html)
  • 具體配置(進入nginx配置文件)
server {
        listen 9000; #nginx監聽9000端口
        server_name localhost; #nginx所在服務器ip

		#~符號表示後面的uri包含正則表達式,並且區分大小寫, 如果用~*則表示不區分大小寫
        location ~ /edu/ { #若匹配上edu路徑,則跳轉到本機的8080端口
            proxy_pass http://127.0.0.1:8080;
        }
        location ~ /vod/ {
            proxy_pass http://127.0.0.1:9080;
        }
    }
  • 注意:防火牆要對外開放所需的端口
  • 最終測試

反向代理實例二(1)

反向代理實例二(2)

nginx配置負載均衡

  • 目標效果
在瀏覽器中輸入地址http://118.66.66.66:9000/edu/a.html
然後通過nginx的負載均衡,將請求平均分配到80809080這兩臺服務器中
  • 準備工作
1.準備兩臺tomcat服務器,一臺8080,一臺9080
2.在兩臺tomcat的webapps目錄中創建名稱爲edu的文件夾,在文件夾中創建頁面b.html,模擬
    同一個應用被在兩臺服務器上配置兩個實例。
  • 在nginx的配置文件中進行如下配置:

    http {
    	....
    
        upstream myserver{
            server 118.66.66.66:8080;
            server 118.66.66.66:9080;
        }
    
        server {
            listen     9000;
            server_name  localhost;
    		....
            location / {
                 proxy_pass http://myserver;
            }
            ....
        }
        ....
    }
    
  • 效果:不停刷新頁面,會來回顯示兩臺服務器上的頁面。

負載均衡的常用策略

  • 輪詢(默認):接收到的請求按照順序逐一分配到不同的後端服務器,即使在使用的過程中,某一臺服務器宕機,nginx會自動將該服務器剔除出隊列,請求受理情況不會受到任何影響。在這種方式下,可以給不同的服務器設置一個權重值(weight),用於調整不同的服務器被分到請求的概率。權重數據越大,被分配到請求的機率就越大。
	upstream myserver{
        server 118.66.66.66:8080 weight=5;
        server 118.66.66.66:9080 weight=10;
    }
  • iphash ;對ip進行hash,這種方法可以使一個固定ip地址的客戶端總會訪問到同一個後端服務器,這也在一定程度上解決了session共享的問題。
	upstream myserver{
        ip_hash;
        server 118.66.66.66:8080;
        server 118.66.66.66:9080;
    }
  • fair(第三方):智能調整調度算法,動態的根據後端服務器的響應時間進行均衡分配。這樣一來,響應時間短,處理效率高的服務器分配到請求的概率高,而響應時間長,處理效率低的服務器分配到的請求會少。但是需要注意的是nginx默認不支持fair算法,若需要使用這種調度策略,需安裝upstream_fair模塊。
	upstream myserver{
        server 118.66.66.66:8080;
        server 118.66.66.66:9080;
    	fair;
    }
  • url_hash:按照訪問的url的hash結果分配請求。每個請求的url會指向後端固定的某個服務器
	upstream myserver{
    	hash $request_uri;
    	server 118.66.66.66:8080;
        server 118.66.66.66:9080;
    }

動靜分離配置

  • 目標效果:
1.訪問http://118.66.66.66:9000/www/a.html
得到a.html這個靜態頁面,不經過tomcat服務器
2.訪問http://118.66.66.66:9000/images/beauty.jpg
得到一張圖片,不經過tomcat解析
  • 準備工作:準備一個目錄data,然後在該目錄中創建www和images目錄,再分別創建a.html,beauty.jpg放入這兩個文件夾

動靜分離

  • 配置文件具體配置:
		location /www/ {
            root /data/;
            index index.html index.htm;
        }
        location /images/ {
            root /data/;
            autoindex on; #自動顯示文件目錄
        }

  • 測試結果:

輸入:http://118.66.66.66:9000/www/a.html

動靜分離效果

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