电竞比分网-中国电竞赛事及体育赛事平台

分享

一篇文章搞懂nginx的使用

 wwq圖書世界 2021-08-09

什么是 nginx

  • Nginx是一個高性能的 HTTP 和反向代理服務(wù)器。特點:占有內(nèi)存小,并發(fā)能力強,事實上nginx 的并發(fā)能力確實是同類網(wǎng)頁服務(wù)器中表現(xiàn)較好。
  • Nginx是專門為性能優(yōu)化而開發(fā),性能是最重要的考量,實現(xiàn)上非常注重效率,能經(jīng)受高負載的考驗,有報告表明支持高達 50000 個并發(fā)連接數(shù)。

nginx 安裝

1.將 Nginx 安裝包上傳到 Linux 中
官網(wǎng):http:///en/download.html 這里安裝使用的 Nginx 版本為 nginx-1.8.0.tar.gz
2 nginx 安裝環(huán)境
nginx 是 C 語言開發(fā),建議在 linux 上運行

  • gcc
    安裝 nginx 需要先將官網(wǎng)下載的源碼進行編譯,編譯依賴 gcc 環(huán)境,如果沒有 gcc環(huán)境,需要安裝 gcc:yum install gcc-c++

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

yum install -y pcre pcre-devel

注:pcre-devel 是使用 pcre 開發(fā)的一個二次開發(fā)庫。nginx 也需要此庫。

  • zlib

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

    yum install -y zlib zlib-developenssl

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

    yum install -y openssl openssl-devel

3.編譯安裝
解壓:tar -zxvf nginx-1.8.0.tar.gz
進入到 nginx 的根目錄 cd nginx-1.8.0

  • 3.1配置安裝參數(shù) ./configure
    參數(shù)設(shè)置如下:
    ./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
    注意:上邊將臨時文件目錄指定為/var/temp/nginx,需要在/var 下創(chuàng)建 temp 及 nginx 目錄

    --prefix=/usr/local/nginx決定將 nginx 安裝到什么位置,設(shè)置了就會自動創(chuàng)建

  • 3.2編譯安裝 編譯:make

    編譯安裝 make install,安裝完成之后在/usr/local/nginx/sbin 下有 sbin 的啟動腳本

4.操作Nginx

  1. 使用 nginx 操作的常用命令:必須要進入 nginx 目錄中去才行 /usr/local/nginx/sbin
  2. 查看 nginx 版本號 查看版本號 ./nginx -v
  3. 查看 nginx 啟動狀態(tài) ps aux|grep nginx
  4. 啟動 nginx
    cd /usr/local/nginx/sbin/
    ./nginx
    注意:執(zhí)行./nginx 啟動 nginx,這里可以-c 指定加載的 nginx 配置文件,如下: ./nginx -c /usr/local/nginx/conf/nginx.conf
    如果不指定-c,nginx 在啟動時默認加載 conf/nginx.conf 文件,此文件的地址也可以在 編譯安裝 nginx 時指定./configure 的參數(shù)(--conf-path= 指向配置文件(nginx.conf))
  5. 停止 nginx
    方式 1,快速停止:
    cd /usr/local/nginx/sbin
    ./nginx -s stop
    此方式相當于先查出 nginx 進程 id 再使用 kill 命令強制殺掉進程。
    方式 2,完整停止(建議使用):
    cd /usr/local/nginx/sbin
    ./nginx -s quit
    此方式停止步驟是待 nginx 進程處理任務(wù)完畢進行停止。
  6. 重啟 nginx
    方式 1,先停止再啟動(建議使用):
    對 nginx 進行重啟相當于先停止 nginx 再啟動 nginx,即先執(zhí)行停止命令再執(zhí)行啟動命令。 如下:
    ./nginx -s quit
    ./nginx
    方式 2,重新加載配置文件:
    當 nginx 的配置文件 nginx.conf 修改后,要想讓配置生效需要重啟 nginx,使用-s reload
    不用先停止 nginx 再啟動 nginx 即可將配置信息在 nginx 中生效,如下:
    ./nginx -s reload
  7. 測試
    nginx 安裝成功,啟動 nginx,即可訪問虛擬機上的 nginx Nginx 默認的是監(jiān)聽80 端口

正向代理

  • 在客戶端(瀏覽器)配置代理服務(wù)器,通過代理服務(wù)器進行訪問,服務(wù)端訪問的是真實的服務(wù)器截屏2020-12-31 下午3.57.00

反向代理

  • 我們只需要將請求發(fā)送到反向代理服務(wù)器,由反向代理服務(wù)器去選擇目標服務(wù)器獲取數(shù)據(jù)后,在返回給客戶端,此時反向代理服務(wù)器和目標服務(wù)器對外就是一個服務(wù)器,暴露的是代理服務(wù)器地址,隱藏了真實服務(wù)器的 ip 地址。服務(wù)端訪問的是代理的服務(wù)器

負載均衡

  • 并發(fā)請求較大,使用單一服務(wù)器容易造成崩潰。單個服務(wù)器解決不了,我們增加服務(wù)器的數(shù)量,然后將請求額分發(fā)到各個服務(wù)器上,將原先請求集中到單個服務(wù)器上的情況改為分發(fā)到多個服務(wù)器上,將負載分發(fā)到不同的服務(wù)器,這就是所說的負載均衡。

動靜分離

  • 為了加快網(wǎng)站的解析速度,可以吧動態(tài)頁面和靜態(tài)頁面由不同服務(wù)器來解析,加快解析速度,降低單個服務(wù)器的壓力。這里會使用 Nginx 處理靜態(tài)頁面物理分離,Tomcat 處理動態(tài)頁面。提供訪問效率

nginx 使用

搭建虛擬主機

虛擬主機是一種特殊的軟硬件技術(shù),它可以將網(wǎng)絡(luò)上的每一臺計算機分成多個虛擬主 機,每個虛擬主機可以獨立對外提供 www 服務(wù),這樣就可以實現(xiàn)一臺主機對外提供多個 web 服務(wù),每個虛擬主機之間是獨立的,互不影響的。
虛擬主機技術(shù)是互聯(lián)網(wǎng)服務(wù)器采用的節(jié)省服務(wù)器硬件成本的技術(shù),虛擬主機技術(shù)主要應(yīng) 用于 HTTP(Hypertext Transfer Protocol,超文本傳輸協(xié)議)服務(wù),將一臺服務(wù)器的某項或 者全部服務(wù)內(nèi)容邏輯劃分為多個服務(wù)單位,對外表現(xiàn)為多個服務(wù)器,從而充分利用服務(wù)器硬 件資源。主要就是節(jié)省硬件成本

Nginx 的虛擬主機配置方式

Nginx 支持三種類型的虛擬主機配置

  1. 基于 IP 的虛擬主機

    這里使用一臺 liunx 搭建 2 個 ip,不同 ip 訪問不同的 html 頁面(這里就是 nginx 的訪問首頁)

    • 第一步,一臺 linux 配置多 ip 方式,將動態(tài) ip 改成靜態(tài) ip 進入 cd /etc/sysconfig/network-scripts ,進入配置 ,需將配置文件中BOOTPRPTP=static,其次添加另一個 ip 配置內(nèi)容:保存重啟服務(wù)即可配置成功。

    IPADDR=192.168.10.144

    NETMASK=255.255.255.0

    GATEWAY=192.168.10.2

    DNS1=114.114.114.114

    • 第二步修改 nginx 的配置文件,我這里是在/usr/local/nginx/conf 目錄下

      Nginx 的配置文件 nginx.conf
      如上述配置文件所示,主要由 6 個部分組成:

      main:用于進行 nginx 全局信息的配置

      events:用于 nginx 工作模式的配置

      http:用于進行 http 協(xié)議信息的一些配置

      server:用于進行服務(wù)器訪問信息的配置 ,一個 server 就是一個虛擬機

      location:用于進行訪問路由的配置

      upstream:用于進行負載均衡的配置

      主要是對 http 下 server 和 location 進行修改配置即可

      #一個 Server 就是一個虛擬主機 
      server {
      listen 80; 
      #為虛擬機指定 IP 或者是域名
      server_name 192.168.70.144;
      #主要配置路由訪問信息 
      location / {
      #用于指定訪問根目錄時,訪問虛擬主機的 web 目錄 就是這個主頁的目錄
      root html144; 
      #在不指定訪問具體資源時,默認的展示資源的列表 
      index index.html index.htm;
      }
      error_page 500 502 503 504 /50x.html; 
      location = /50x.html {
      root html; }
      }
      
  2. 基于端口的虛擬主機

    • 基于端口和 ip 配置都差不多這里主要修改 listen 即可

      #一個 Server 就是一個虛擬主機 基于端口 
      server {
      listen 8080; 
      #為虛擬機指定 IP 或者是域名
      server_name 192.168.70.188;
      #主要配置路由訪問信息 
      location / {
      #用于指定訪問根目錄時,訪問虛擬主機的 web 目錄 
      root html8080;
      #在不指定訪問具體資源時,默認的展示資源的列表 
      index index.html index.htm;
      }
      error_page 500 502 503 504 /50x.html; location = /50x.html {
      root html; }
      }
      
  3. 基于域名的虛擬主機(以 mac 配置)

    • 修改hosts 下面的映射關(guān)系 命令:sudo vi /etc/hosts,進入之后進行映射

      192.168.70.188 www.123.com

    • 修改 Nginx 的配置文件完成基于域名的虛擬主機配置

      server {
      listen 80;
      #為虛擬機指定 IP 或者是域名,這里使用域名
      server_name  www.123.com;
      #主要配置路由訪問信息 
      location / {
      #用于指定訪問根目錄時,訪問虛擬主機的 web 目錄 
      root html-123;
      #在不指定訪問具體資源時,默認的展示資源的列表
      index index.html index.htm; }
      error_page 500 502 503 504 /50x.html; location = /50x.html {
      root html; }
      }
      

    這三種配置方式其實都比較類似主要是修改 配置文件中的 listen,server_name,以及 location 既可以完成

反向代理

這里需要先對 虛擬機ip(nginx 默認端口就是80可省略) 和域名做一個映射,前面已經(jīng)使用過不在贅述,其次就是修改 nginx.conf配置文件,完成配置

http {
include mime.types; 
default_type application/octet-stream;
sendfile on; 
keepalive_timeout 65;
## 增加這個屬性完成虛擬機代理,表示代理那個服務(wù)器
upstream tomcat_server1{ 
server 192.168.70.143:8080; 
}
server {
listen 80;
#為虛擬機指定 IP 或者是域名 
server_name com.123.com;
#主要配置路由訪問信息 location / {
#用于指定訪問根目錄時,訪問虛擬主機的 web 目錄 這里刪除 root,root 是去找虛擬機中的目錄
proxy_pass http://tomcat_server1;
#在不指定訪問具體資源時,默認的展示資源的列表

通過以上配置,重啟 nginx 既可以完成代理,通過訪問 www.123.com,就可以訪問 tomcat 首頁

負載均衡

什么是負載均衡

  • 負載均衡建立在現(xiàn)有網(wǎng)絡(luò)結(jié)構(gòu)之上,它提供了一種廉價有效透明的方法擴展 網(wǎng)絡(luò)設(shè)備和服務(wù)器的帶寬、增加吞吐量、加強網(wǎng)絡(luò)數(shù)據(jù)處理能力、提高網(wǎng)絡(luò)的靈活性和可用性。負載均衡,英文名稱為Load Balance,其意思就是分攤到多個操作單元上進行執(zhí)行,例如 Web 服務(wù)器、FTP 服務(wù)器、企業(yè)關(guān)鍵應(yīng)用服務(wù)器和其它關(guān)鍵任務(wù) 服務(wù)器等,從而共同完成工作任務(wù)。

負載均衡的策略

  • 輪詢(默認) 每個請求按時間順序逐一分配到不同的后端服務(wù)器,如果后端服務(wù)器 down 掉,能自動剔除。

  • 指定權(quán)重
    指定輪詢幾率,weight 和訪問比率成正比,用于后端服務(wù)器性能不均的情況。性能高的多處理
    upstream backserver {
    server 192.168.0.14 weight=10;
    server 192.168.0.15 weight=10;
    }

  • IP 綁定 ip_hash
    每個請求按訪問 ip 的 hash 結(jié)果分配,這樣每個訪客固定訪 問一個后端服務(wù)器,可以解決 session 的問題。
    upstream backserver {
    ip_hash;
    server 192.168.0.14:88;
    server 192.168.0.15:80;
    }

這里通過同一個 liunx 上使用兩個 tomcat 模擬

如何在一個虛擬機配置多個 tomcat?

這里和使用一個 tomcat 的時候是一致的,只需要修改配置文件中的標簽即可,進入 tomcat 目錄修改

如下標簽,主要是為了區(qū)分端口號:只要不要和第一個 tomcat 相同即可,默認端口是 8080

配置 nginx 的集群 還是在 nginx.conf 中進行配置,直接在之前反向代理的配置中進行增加即可,即可配置成集群

## 增加這個屬性完成虛擬機代理
upstream tomcat_server1{ 
server 192.168.70.143:8080; ## 直接在后面加權(quán)重即可
server 192.168.70.143:9090;
}
節(jié)點說明:
在 http 節(jié)點里添加:
定義負載均衡設(shè)備的 Ip 及設(shè)備狀態(tài) 
upstream myServer {
server 127.0.0.1:9090 down; 
server 127.0.0.1:8080 weight=2; 
server 127.0.0.1:6060;
server 127.0.0.1:7070 backup;
}
在需要使用負載的 Server 節(jié)點下添加 proxy_pass http://myServer;
upstream 每個設(shè)備的狀態(tài):
down 表示單前的 server 暫時不參與負載
weight 默認為 1.weight 越大,負載的權(quán)重就越大
fail_timeout:次失敗后,暫停的時間 默認 10s
max_fails :允許請求失敗的次數(shù)默認為 1.當超過最大次數(shù)時,返回
backup: 其它所有的非 backup 機器 down 或者忙的時候,請求 backup 機器。所以這臺機器壓力會最輕。

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多