亚洲精品亚洲人成在线观看麻豆,在线欧美视频一区,亚洲国产精品一区二区动图,色综合久久丁香婷婷

              當(dāng)前位置:首頁 > IT技術(shù) > 其他 > 正文

              0009 Nginx知識點(diǎn)
              2022-08-29 23:56:33

              01 nginx基礎(chǔ)概念

              1.1 什么是nginx

                l?是一個高性能的HTTP和反向代理服務(wù)器

                l?特點(diǎn):占有內(nèi)存少,并發(fā)能力強(qiáng)

                l?事實(shí)上Nginx的并發(fā)能力確實(shí)在同類型的網(wǎng)頁服務(wù)器中表現(xiàn)較好

                l?可以作為靜態(tài)頁面的web服務(wù)器,同時還支持CGI協(xié)議的動態(tài)語言,如perl、PHP

                l?不支持java,java程序只能通過與tomcat配合完成

                l 專為性能優(yōu)化而開發(fā),是線上非常注重效率,能經(jīng)受高負(fù)載的考驗,最大支持的并發(fā)連接數(shù)是50000

                l 支持熱部署,啟動特別容易,并且?guī)缀踝龅?/span>7*24不間斷運(yùn)行,即使運(yùn)行幾個月也不需要重新啟動,還能夠在不間斷服務(wù)的情況下,對軟件版本進(jìn)行升級

              1.2 反向代理

              1) 正向代理

                在客戶端(瀏覽器)配置代理服務(wù)器,通過代理服務(wù)器進(jìn)行互聯(lián)網(wǎng)訪問的過程

                

              2)反向代理

                反向代理:其實(shí)客戶端對代理是無感知的,因為客戶端不需要任何配置就可以訪問。

                我們需要將請求發(fā)送到反向代理服務(wù)器,由反向代理服務(wù)器去選擇目標(biāo)服務(wù)器并獲取數(shù)據(jù),然后在返回給客戶端,

                此時反向代理服務(wù)器和目標(biāo)服務(wù)器對外是一臺服務(wù)器,暴露的是代理服務(wù)器地址,隱藏了真是服務(wù)器的IP地址。

                

              ?1.3 負(fù)載均衡

                普通請求處理方式:客戶端發(fā)送多個請求到服務(wù)器,服務(wù)器處理請求,有一些可能要與數(shù)據(jù)庫進(jìn)行交互,服務(wù)器處理完畢后,再講結(jié)果返回給服務(wù)端

              ?   

                單個服務(wù)器解決不了,我們增加服務(wù)器的數(shù)量,然后將請求分發(fā)到各個服務(wù)器上,將原先請求集中到單個服務(wù)器上的情況改為請求分發(fā)到多個服務(wù)器上,將負(fù)載分發(fā)到不同的服務(wù)器,就是我們所說的負(fù)載均衡

                

              1.4 動靜分離

                為了加快網(wǎng)站的解析速度,可以把動態(tài)頁面和靜態(tài)頁面由不同的服務(wù)器來解析,加快解析速度,降低原來單個服務(wù)器的壓力

              ?

              ?

                

              ?02 nginx安裝,常用命令和配置文件

              2.1 nginx安裝(linux)結(jié)合docker

              步驟一:docker search nginx

                

              ?步驟二:拉取最新版本的Nginx

                

              ?步驟三:新建并運(yùn)行

                

              ?步驟四:訪問

                

              說明:

              安裝完成后,我們可以使用以下命令來運(yùn)行 nginx 容器:

              $ docker run --name nginx-test -p 8080:80 -d nginx

              參數(shù)說明:

              •  --name nginx-test:容器名稱。
              • -p 8080:80: 端口進(jìn)行映射,將本地 8080 端口映射到容器內(nèi)部的 80 端口。
              • -d nginx: 設(shè)置容器在在后臺一直運(yùn)行。

              注意:

              1. 其中的會出現(xiàn)加載時間過長的問題,其原因是配置文件中的問題,需要修改
              2. 配置文件中的端口與啟動映射的管口要保持一致才行

              ?安裝完成之后,在user多出來一個文件夾local/nginx,在Nginx中有sbin啟動腳本

              ?

              ?2.2 常用命令

              01 使用nginx操作命令的前提條件:必須進(jìn)入nginx的目錄中/user/local/nginx/sbin

              02 查看nginx的版本號:./nginx -V

              ?  

              03 啟動nginx: ?./nginx

              ?  

              ?04? 關(guān)閉nginx: ?./nginx -s stop

              ?   

              ? 05 查看nginx狀態(tài): ?ps -ef | grep nginx

                

              ?06 重新加載nginx: ?./nginx -s reload

                

              ?2.3配置文件

              01 配位文件的位置

                

              ?02 配置文件的內(nèi)容

              #===================全局塊開始======================
              #user  nobody;
              #工作進(jìn)程數(shù),一般配置成和cpu數(shù)量一致
              worker_processes  1;
              #全局錯誤日志及pid文件存放位置
              error_log  logs/error.log;
              #error_log  logs/error.log  notice;
              #error_log  logs/error.log  info;
              #nginx 啟動master進(jìn)程pid號
              #pid        logs/nginx.pid;
              #=================全局塊結(jié)束============================
                    
              #==============events塊開始======================
              events {
              #標(biāo)識單個worker進(jìn)程的最大并發(fā)數(shù)
                  worker_connections  1024;
              }
              #============events塊結(jié)束============================
              
              #============http塊開始(nginx服務(wù)器中配置最頻繁的部分,配置虛擬主機(jī),監(jiān)聽端口,請求轉(zhuǎn)發(fā)等等)==========================
              http {
                  #引入 mime 類型定義文件
                  include       mime.types;
                  default_type  application/octet-stream;
                 #設(shè)置日志生成格式
                  #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                  #                  '$status $body_bytes_sent "$http_referer" '
                  #                  '"$http_user_agent" "$http_x_forwarded_for"';
                  #access_log  logs/access.log  main;
                  sendfile        on;
                  #tcp_nopush     on;
                #連接的超時時間
                  #keepalive_timeout  0;
                  keepalive_timeout  65;
                 #解開注釋就是開啟gzip壓縮
                  #gzip  on;
                  #此處配置多臺tomcat服務(wù)器(名稱不能有下劃線:webServer)
                  upstream webServer{
                      server 127.0.0.1:8081;
                      server 127.0.0.1:8082;
                   } 
              	#此處配置多臺tomcat服務(wù)器(名稱不能有下劃線:webs2Server)
                  #upstream webs2Server{
                    #server 192.168.30.19:8083;
                    #server 192.168.32.12:8085;
                  #}
                  server {
                      #定義當(dāng)前這個server監(jiān)聽的端口
                      listen       80;
                      #定義使用localhost訪問
                      server_name  localhost;
                      #charset koi8-r;
                      #access_log  logs/host.access.log  main;
                      #默認(rèn)請求地址,如果請求是:192.168.10.80:80/  那么會進(jìn)入這個里面的tomcat反向代理地址
                      #一個location里面只能有一個proxy_pass
                      location / {
                      #此處可以配置Tomcat反向代理地址比如:
                      #此處可以引用上面upstream 的多臺tomcat;也可以單獨(dú)配置一臺
                      proxy_pass http://127.0.0.1:8081/; #配置單臺
                      #proxy_pass http://webServer/; #引用上面的多臺
                      #引用上面的多臺配置
                         # root   html; #默認(rèn)的網(wǎng)站根目錄的位置
                          #index  index.html index.htm; #網(wǎng)站的歡迎頁,起始頁
                      }
                      #表示如果請求是:192.168.10.80:80/web 那么會進(jìn)入這個里面的tomcat反向代理地址
                      location /web {
                      #此處引用上面的配置的多臺tomcat
                      #proxy_pass http://127.0.0.1:8082/;
                      #proxy_pass http://w eb2Server/; #引用上面的多臺Tomcat配置
                      }
                      #error_page  404              /404.html;
                      # redirect server error pages to the static page /50x.html
                      #
                      #錯誤提示頁面
                      error_page   500 502 503 504  /50x.html;
                      location = /50x.html {
                          root   html;
                      }
                      # proxy the PHP scripts to Apache listening on 127.0.0.1:80
                      #
                      #location ~ .php$ {
                      #    proxy_pass   http://127.0.0.1;
                      #}
                      # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
                      #
                      #location ~ .php$ {
                      #    root           html;
                      #    fastcgi_pass   127.0.0.1:9000;
                      #    fastcgi_index  index.php;
                      #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
                      #    include        fastcgi_params;
                      #}
                      # deny access to .htaccess files, if Apache's document root
                      # concurs with nginx's one
                      #
                      #location ~ /.ht {
                      #    deny  all;
                      #}
                  }
                  # another virtual host using mix of IP-, name-, and port-based configuration
                  #
                  #server {
                  #    listen       8000;
                  #    listen       somename:8080;
                  #    server_name  somename  alias  another.alias;
              
                  #    location / {
                  #        root   html;
                  #        index  index.html index.htm;
                  #    }
                  #}
                  # HTTPS server
                  #
                  #server {
                  #    listen       443 ssl;
                  #    server_name  localhost;
                  #    ssl_certificate      cert.pem;
                  #    ssl_certificate_key  cert.key;
                  #    ssl_session_cache    shared:SSL:1m;
                  #    ssl_session_timeout  5m;
                  #    ssl_ciphers  HIGH:!aNULL:!MD5;
                  #    ssl_prefer_server_ciphers  on;
                  #    location / {
                  #        root   html;
                  #        index  index.html index.htm;
                  #    }
                  #}
              }
              

              ?03 配置文件組成

                1)有但部分組成

                  

              ?    

              03 nginx配置實(shí)例-反向代理

              1)?實(shí)現(xiàn)效果:打開瀏覽器,在瀏覽器地址欄輸入地址www.123.com,跳轉(zhuǎn)到linux系統(tǒng)tomcat主頁面中

              2)?準(zhǔn)備工作

              (1)linux系統(tǒng)安裝tomcat,并使用默認(rèn)端口8080 ?

                

              ?3)在windows系統(tǒng)中通過瀏覽器訪問tomcat服務(wù)器

                

              3)?訪問過程分析

                

              4)?具體配置

              (1)?nginx中進(jìn)行 請求轉(zhuǎn)發(fā)的配置(反向代理)

              ???????

              5)?最終測試

              ??????

              ?

              ?

              04 nginx配置實(shí)例--反向代理02

              1)實(shí)現(xiàn)效果:

                  使用nginx反向代理,根據(jù)訪問的路徑不同跳轉(zhuǎn)到不同端口的服務(wù)中去

                  Nginx監(jiān)聽端口為9001

                  訪問http://127.0.0.1:9001/edu/ 直接跳轉(zhuǎn)到127.0.0.1:8080

                  訪問http://127.0.0.1:9001/vod/ 直接跳轉(zhuǎn)到127.0.0.1:8081

              2)準(zhǔn)備工作

                (1)?準(zhǔn)備兩個tomcat服務(wù)器,一個是8080端口,一個是8081端口

                (2)?準(zhǔn)備文件夾和測試頁面

              3)具體配置

               ?。?)找到nginx的配置文件,進(jìn)行反向代理配置

                  

               ?。?)開放對外訪問的端口號 9001, 8080,,8081

              4)最終測試

                 

               說明:

              ?  

              ?05 nginx配置實(shí)例--負(fù)載均衡

              1)?實(shí)現(xiàn)效果

                瀏覽器地址欄輸入地址http://192.168.17.129/edu/a.html 負(fù)載均衡效果,平均到80808081端口中

              2)?準(zhǔn)備工作

              1. 準(zhǔn)備兩臺tomcat服務(wù)器,分別是8080,8081
              2. 在兩臺tomcat里面webapps目錄中,創(chuàng)建名稱為edu文件夾,在edu文件夾中創(chuàng)建頁面a.html

              3)?nginx的配置文件中進(jìn)行負(fù)載均衡的配置工作

                

              ?06nginx分配服務(wù)器策略

              第一種:輪詢(默認(rèn))

                每個請求按照時間順序逐一分配到不同的后端服務(wù)器,如果后端服務(wù)器down掉,會被自動踢出

              第二種: 權(quán)重

                weight代表權(quán)重,默認(rèn)為1,權(quán)重越高被分配的客戶端越多

              ?  

                通過修改weight的值即可

              第三種:ip_hash:按照每個請求訪問ip的hash結(jié)果分配,這樣每個訪客固定訪問一個后端服務(wù)器,可以解決session的問題

               

              ?  可以解決session共享問題

              第四種:fair:按后端服務(wù)器的響應(yīng)時間來分配請求,響應(yīng)時間短的優(yōu)先分配

              ?  

              ?07 ngnix配置實(shí)例--動靜分離

                動靜分離簡單來說就是把動態(tài)請求和靜態(tài)請求分開,不能理解為把動態(tài)頁面和靜態(tài)頁面物理分離

              ?????

              動靜分離的兩種方式

              1. 純粹的把靜態(tài)文件獨(dú)立成單獨(dú)的域名,放到獨(dú)立的服務(wù)器上,(兩個tomcat)(主流推崇)
              2. 動態(tài)和靜態(tài)文件混合在一起發(fā)布,通過nginx來分開處理

              1)?準(zhǔn)備工作

              ?

              2)? 具體配置

              nginx配置文件中進(jìn)行配置

              ?3)最終測試

               ???  

              ?  

              ?08 nginx配置高可用集群

              01 什么是高可用

              面臨的問題:如果nginx宕機(jī)(即請求無法實(shí)現(xiàn)的效果)

              ?

              ?高可用

              (1)需要兩臺nginx服務(wù)器

              (2)需要keepalived

              (3)需要一個虛擬ip

              ?

              ?安裝之后,在etc里面生成目錄keepalived,有文件keepalived.conf

              4.完成高可用配置(主從配置)

              配置文件keepalived.conf(兩臺服務(wù)器都需要)

              ?

              ?主服務(wù)器

              ?

              ?腳本文件

              ?

              ?備份服務(wù)器

              ?腳本文件

              最終測試:

              (1)在瀏覽器地址欄輸入虛擬ip地址 192.168.17.50

              ?

              訪問

              (2)把主服務(wù)器(192.168.17.129nginxkeepalived停止(先停keepalived,再停止nginx),然后輸入192.168.17.50,仍能正常訪問

              ?

              ?從(備)服務(wù)器中的效果

              ?瀏覽器

              ?

              ?09 nginx原理解析

              ?

              ?

              本文摘自 :https://www.cnblogs.com/

              開通會員,享受整站包年服務(wù)立即開通 >