Nginx簡單入門與反向代理和負載均衡

什麼是Nginx

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

應用場景

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

Nginx的安裝

1.環境準備

  1. 需要安裝gcc的環境
yum install gcc-c++
  1. 第三方的開發包 PCRE
yum install -y pcre pcre-devel

  PCRE(Perl Compatible Regular Expressions)是一個 Perl 庫,包括 perl 兼容的正則表達式庫。nginx 的 http 模塊使用 pcre 來解析正則表達式,所以需要在 linux 上安裝 pcre 庫,pcre-devel 是使用 pcre 開發的一個二次開發庫。nginx 也需要此庫

  1. zlib
yum install -y zlib zlib-devel

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

  1. OpenSSL
yum install -y openssl openssl-devel

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

2.Nginx 下載

官方網站下載 nginx:http://nginx.org/
我這篇博客中使用的版本是 1.8.0 版本。

3.Nginx安裝

  1. 把 nginx 的源碼包nginx-1.8.0.tar.gz上傳到 linux 系統,,Alt+p 啓動sftp ,將nginx-1.8.0.tar.gz上傳
  2. 解壓縮
tar zxvf nginx-1.8.0.tar.gz
  1. 進入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庫

  1. 編譯
make
  1. 安裝
make install

Nginx 啓動與訪問

  1. 注意:啓動nginx 之前,上邊將臨時文件目錄指定爲/var/temp/nginx/client, 需要在/var 下創建此 目錄
mkdir /var/temp/nginx/client -p
  1. 進入到Nginx目錄下的sbin目錄
cd /usr/local/nginx/sbin
  1. 輸入命令啓動Nginx
./nginx
  1. 啓動後查看進程
ps aux|grep nginx

在這裏插入圖片描述
在瀏覽器裏輸入虛擬機的IP即可訪問,默認端口位80
在這裏插入圖片描述

  1. 關閉 nginx:
./nginx -s stop 
或者
./nginx -s quit
  1. 重啓 nginx:
./nginx -s reload

配置虛擬主機

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

1. 端口綁定

  1. 在 /usr/local/nginx/ 下創建myhtml 並在myhtml創建demo.html 內容隨便寫點
  2. 修改 Nginx 的配置文件:/usr/local/nginx/ngnix.conf
   server {
        listen       81;
        server_name  localhost;
        location / {
            root   myhtml;
            index  demo.html;
        }      
    }
  1. 重啓一下nginx
./nginx -s reload
  1. 輸入IP:81 即可
    在這裏插入圖片描述

反向代理與負載均衡

反向代理

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

負載均衡

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

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

  1. 將放有首頁工程的tomcat複製三份,端口分別爲8080、8180 和8280 。
  2. 分別啓動這兩個tomcat服務器的tomcat服務。
  3. 爲了能夠區分是訪問哪個服務器的網站,可以在首頁標題加上標記以便區分。
  4. 修改Nginx的配置文件
upstream tomcat-portal {
	server 192.168.25.101:8080;
	server 192.168.25.101:8180;
	server 192.168.25.101:8280;
    }
    server {
        listen       80;
        # 下面寫域名
        server_name  ........;
 
        location / {
            proxy_pass   http://tomcat-portal;
            index  index.html;
        }       
       
    }

在地址欄 直接輸入域名 即可

如果想其中一臺讓其承擔更多的壓力,可以配置權重。

upstream tomcat-portal {
	  server 192.168.25.101:8080;
	  server 192.168.25.101:8180 weight=2;
	  server 192.168.25.101:8280;
    }

end…

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