亚洲午夜无码久久,今天高清视频免费观看,欧美一夜爽爽爽爽爽爽,在线亚洲欧美日韩精品专区

行業(yè)資訊

全面解析|搞懂Nginx這一篇就夠了


2020年12月10日

Nginx是一個(gè)http服務(wù)器,是一個(gè)使用c語(yǔ)言開(kāi)發(fā)的高性能的http服務(wù)器及反向代理服務(wù)器。Nginx是一款高性能的http服務(wù)器/反向代理服務(wù)器及電子郵件(IMAP/POP3)代理服務(wù)器。由俄羅斯的程序設(shè)計(jì)師Igor Sysoev所開(kāi)發(fā),官方測(cè)試Nginx能夠支撐5萬(wàn)并發(fā)鏈接,并且cpu、內(nèi)存等資源消耗卻非常低,運(yùn)行非常穩(wěn)定。本文將為大家詳細(xì)介紹關(guān)于Nginx的原理以及在應(yīng)用場(chǎng)景下的相關(guān)解析。

1. Nginx的概念?

「什么是Nginx呢:」

  • Nginx是一個(gè)基于HTTP的反向代理服務(wù)器,也是一個(gè)基IMAP/POP3/SMTP服務(wù)郵件服務(wù)器
  • 反向代理服務(wù)器:現(xiàn)在我們A需要訪(fǎng)問(wèn)的目標(biāo)B服務(wù)器的10.7.182.100,我要訪(fǎng)問(wèn)這個(gè)B服務(wù)器上的資源,現(xiàn)在如果使用了Nginx之后,我可以通過(guò)Nginx服務(wù)器從而達(dá)到訪(fǎng)問(wèn)10.7.182.100這個(gè)服務(wù)器的目的

  • IMAP/POP/SMTP:這三個(gè)是郵件的傳輸協(xié)議
  • 郵件服務(wù)器:發(fā)送郵件 接收郵件
  • Web服務(wù)器:本身是一個(gè)Web服務(wù)器的軟件,類(lèi)似于Tomcat這種Web服務(wù)的軟件

「Nginx能干什么呢:」

  • 可以作為Web服務(wù)器
  • 可以作為郵件服務(wù)器
  • 可以作為反向代理的服務(wù)器
  • 動(dòng)靜分離(就是將動(dòng)態(tài)資源和靜態(tài)資源分隔開(kāi))
  • 可以實(shí)現(xiàn)負(fù)載均衡

2、Nginx的安裝

「Nginx安裝步驟:」


 
  1. 第一步:下載我們的nginx 這里以1.6.2版本為例 
  2.  
  3. 第二步:共享安裝文件到我們的linux上面 
  4.  
  5. 第三步:將文件拷貝到/usr/local下面 
  6.  
  7. 第四步:安裝 tar -zxvf xxxx.tar.gz 
  8.  
  9. 第五步:下載所需要的依賴(lài)庫(kù) yum install pcre  yum install pcre-devel  yum install zlib   yum install zlib-devel 
  10.  
  11. 第六步:進(jìn)行config的配置 
  12. cd nginx-1.6.2 && ./configure --prefix=/usr/local/nginx 
  13.  
  14. 第七步:安裝 
  15.  
  16. make && make install  
  17.  
  18. 第八步:啟動(dòng)nginx 
  19.  
  20. /usr/local/nginx/sbin/nginx 
  21.  
  22. 關(guān)閉: .... -s stop -s reload  
  23.  
  24. 查看端口是否有問(wèn)題 
  25.  
  26. netstat -tunpl |grep 80 
  27.  
  28. 瀏覽器進(jìn)行驗(yàn)證沒(méi)問(wèn)題就可以 

3、Nginx的配置文件的解析

「配置文件:」


 
  1. #user  nobody; 
  2. #工作的線(xiàn)程(4核8線(xiàn)程那么下面就設(shè)置成8 物理硬件有關(guān)) 
  3. worker_processes  1; 
  4.  
  5. #全局的錯(cuò)誤日志存放的地方 
  6. #error_log  logs/error.log; 
  7.  
  8. #全局錯(cuò)誤日志存放的地方 后面的notice表示的是輸出錯(cuò)誤日志的格式 
  9. #error_log  logs/error.log  notice; 
  10. #error_log  logs/error.log  info; 
  11.  
  12. #nginx進(jìn)程號(hào)存放的地方 
  13. #pid        logs/nginx.pid; 
  14.  
  15.  
  16. #最大的連接數(shù)(這個(gè)也跟硬件是有關(guān)系的) 
  17. events { 
  18.     worker_connections  1024; 
  19.  
  20.  
  21. #下面就是跟HTTP請(qǐng)求有關(guān)系的了 
  22. http { 
  23.     #表示的是當(dāng)前服務(wù)器支持的類(lèi)型 
  24.     include       mime.types; 
  25.     #默認(rèn)傳輸?shù)臄?shù)據(jù)類(lèi)型是流  
  26.     default_type  application/octet-stream; 
  27.  
  28.     #聲明了一種日志格式 這種日志格式的名字叫做  main 
  29.     log_format  main  '$remote_addr - $remote_user [$time_local] "$request" ' 
  30.                       '$status $body_bytes_sent "$http_referer" ' 
  31.                       '"$http_user_agent" "$http_x_forwarded_for"'; 
  32.  
  33.     #表示的是每一次請(qǐng)求的日志記錄 格式就是上面的main格式 
  34.     access_log  logs/access.log  main; 
  35.      
  36.     #是否可以發(fā)送文件 
  37.     sendfile        on; 
  38.     #tcp_nopush     on; 
  39.  
  40.     #這個(gè)是雙活的超時(shí)的時(shí)間 
  41.     #keepalive_timeout  0; 
  42.     keepalive_timeout  65; 
  43.  
  44.     #是否打開(kāi)文件的壓縮 
  45.     #gzip  on; 
  46.  
  47.     #虛擬一個(gè)主機(jī) 
  48.     
  49.    #負(fù)載均衡的配置 
  50.    upstream qianyu { 
  51.       ip_hash; 
  52.       server 10.7.182.110:8080; 
  53.       server 10.7.182.87:8080; 
  54.    } 
  55.  
  56.     #server { 
  57.       # listen     90; 
  58.       # server_name localhost;  
  59.       # location / { 
  60.       #    root qianyu; 
  61.       #    index qianyu.html; 
  62.       # } 
  63.       #做一個(gè)反向代理 
  64.       #表示的是 如果你訪(fǎng)問(wèn)的后綴是 .jpg結(jié)尾的話(huà)那么 就訪(fǎng)問(wèn)下面的另外的服務(wù)器 
  65.        # location ~ \.jpg$ { 
  66.        #     proxy_pass   http://10.7.182.110:8080; 
  67.        # } 
  68.  
  69.       #下面要演示一個(gè)負(fù)載均衡的例子 
  70.        #location ~ \.jpg$ { 
  71.        #    proxy_pass   http://qianyu; 
  72.        #} 
  73.     #} 
  74.  
  75.    #虛擬一個(gè)動(dòng)靜分離的機(jī)器 
  76.    server { 
  77.      listen     9999; 
  78.      server_name localhost; 
  79.       
  80.      #表示的是動(dòng)態(tài)資源訪(fǎng)問(wèn)的機(jī)器 
  81.  
  82.       location / { 
  83.             proxy_pass   http://10.7.182.54:8080; 
  84.       } 
  85.       
  86.   
  87.     #表示的是非  css和js文件訪(fǎng)問(wèn)的地址 
  88.     location ~ .*\.(htm|html|gif|jpg|jpeg|png|bmp|swf|ioc|rar|zip|txt|flv|mid|doc|ppt|pdf|xls|mp3|wma)$ 
  89.         { 
  90.             root /usr/local/webapp; 
  91.             expires 30d; 
  92.         } 
  93.       #表示的是css和js的訪(fǎng)問(wèn)地址 
  94.       location ~ .*\.(js|css)?$ 
  95.        { 
  96.          root /usr/local/webapp; 
  97.          expires 1h; 
  98.        } 
  99.  
  100.   } 
  101.  
  102.     #虛擬了服務(wù)器 
  103.     server { 
  104.         #端口是  80 
  105.         listen       80; 
  106.         #這個(gè)表示的是虛擬服務(wù)器默認(rèn)訪(fǎng)問(wèn)的是本機(jī) 
  107.         server_name  localhost; 
  108.         #這個(gè)是虛擬服務(wù)器的編碼 
  109.         #charset koi8-r; 
  110.         #當(dāng)前服務(wù)器的日志的存儲(chǔ)的地方 
  111.         #access_log  logs/host.access.log  main; 
  112.  
  113.         #做了一個(gè)地址的映射 
  114.         location / { 
  115.             root   html; 
  116.             index  index.html index.htm; 
  117.         } 
  118.          
  119.         #如果報(bào)404的時(shí)候訪(fǎng)問(wèn)的頁(yè)面 
  120.         #error_page  404              /404.html; 
  121.  
  122.         # redirect server error pages to the static page /50x.html 
  123.         #報(bào)錯(cuò)50開(kāi)頭的是 就訪(fǎng)問(wèn)50x.html 
  124.         error_page   500 502 503 504  /50x.html; 
  125.         #下面對(duì)50x.html又做了一個(gè)映射  就訪(fǎng)問(wèn)根目錄下的html中的  50x.html 
  126.         location = /50x.html { 
  127.             root   html; 
  128.         } 
  129.  
  130.         # proxy the PHP scripts to Apache listening on 127.0.0.1:80 
  131.         # 
  132.         #location ~ \.php$ { 
  133.         #    proxy_pass   http://127.0.0.1; 
  134.         #} 
  135.  
  136.         # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 
  137.         # 
  138.         #location ~ \.php$ { 
  139.         #    root           html; 
  140.         #    fastcgi_pass   127.0.0.1:9000; 
  141.         #    fastcgi_index  index.php; 
  142.         #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name; 
  143.         #    include        fastcgi_params; 
  144.         #} 
  145.  
  146.         # deny access to .htaccess files, if Apache's document root 
  147.         # concurs with nginx's one 
  148.         # 
  149.         #location ~ /\.ht { 
  150.         #    deny  all; 
  151.         #} 
  152.     } 
  153.  
  154.  
  155.     # another virtual host using mix of IP-, name-, and port-based configuration 
  156.     # 
  157.     #server { 
  158.     #    listen       8000; 
  159.     #    listen       somename:8080; 
  160.     #    server_name  somename  alias  another.alias; 
  161.  
  162.     #    location / { 
  163.     #        root   html; 
  164.     #        index  index.html index.htm; 
  165.     #    } 
  166.     #} 
  167.  
  168.  
  169.     # HTTPS server 
  170.     # 
  171.     #server { 
  172.     #    listen       443 ssl; 
  173.     #    server_name  localhost; 
  174.  
  175.     #    ssl_certificate      cert.pem; 
  176.     #    ssl_certificate_key  cert.key; 
  177.  
  178.     #    ssl_session_cache    shared:SSL:1m; 
  179.     #    ssl_session_timeout  5m; 
  180.  
  181.     #    ssl_ciphers  HIGH:!aNULL:!MD5; 
  182.     #    ssl_prefer_server_ciphers  on; 
  183.  
  184.     #    location / { 
  185.     #        root   html; 
  186.     #        index  index.html index.htm; 
  187.     #    } 
  188.     #} 
  189.  

4、實(shí)現(xiàn)Nginx下的反向代理

「做一個(gè)反向代理:」

表示的是如果你訪(fǎng)問(wèn)的后綴是 .jpg結(jié)尾的話(huà),那么就訪(fǎng)問(wèn)下面的另外的服務(wù)器


 
  1. location ~ \.jpg$ { 
  2.             proxy_pass   http://10.7.182.110:8080; 
  3.         } 

5、實(shí)現(xiàn)Nginx下的負(fù)載均衡

「第一種策略:默認(rèn)是輪循的策略:」


 
  1. 配置upstream 
  2.    upstream qianyu { 
  3.       server 10.7.182.110:8080; 
  4.       server 10.7.182.87:8080; 
  5.    } 
  6.    配置負(fù)載均衡 
  7.    location ~ \.jpg$ { 
  8.            proxy_pass   http://qianyu; 
  9.    } 

「第二種策略:權(quán)重(weight):」


 
  1. #負(fù)載均衡的配置 
  2.   upstream qianyu { 
  3.      server 10.7.182.110:8080 weight=2; 
  4.      server 10.7.182.87:8080 weight=1; 
  5.   } 
  6.  配置負(fù)載均衡 
  7.      location ~ \.jpg$ { 
  8.            proxy_pass   http://qianyu; 
  9.      } 

「第三種策略:IPHash的使用:」


 
  1.  #負(fù)載均衡的配置 
  2.    upstream qianyu { 
  3.       ip_hash; 
  4.       server 10.7.182.110:8080; 
  5.       server 10.7.182.87:8080; 
  6.    } 
  7. 配置負(fù)載均衡 
  8.     location ~ \.jpg$ { 
  9.            proxy_pass   http://qianyu; 
  10.     } 

6、實(shí)現(xiàn)Nginx下的動(dòng)靜分離

「動(dòng)靜分離:」

  • 簡(jiǎn)單的來(lái)說(shuō)就是將動(dòng)態(tài)資源和靜態(tài)資源給分隔開(kāi)
  • 靜態(tài)資源放到Nginx服務(wù)器上
  • 動(dòng)態(tài)資源放到Tomcat服務(wù)器上

 
  1. Jpg   html   css    png   gif    ....靜態(tài)資源  ---->放到Nginx服務(wù)器上 
  2. .action結(jié)尾的都是動(dòng)態(tài)的資源     ------------------------->放到Tomcat的服務(wù)器上 

「動(dòng)靜分離的實(shí)現(xiàn):」

  • 在/usr/local目錄下創(chuàng)建webapp文件夾
  • 在webapp目錄下創(chuàng)建css、html、js、img文件夾
  • 編寫(xiě)HTML的內(nèi)容并將html文件放到webapp目錄下

 
  1. <!DOCTYPE html> 
  2. <html> 
  3.  <head> 
  4.   <meta charset="utf-8" /> 
  5.   <title></title> 
  6.   <link rel="stylesheet" type="text/css" href="/css/main.css"/> 
  7.   <script src="/js/main.js" type="text/javascript" charset="utf-8"></script> 
  8.  </head> 
  9.  <body> 
  10.   <img src="/img/bbb.jpg"/> 
  11.   <br /> 
  12.   <a href="/Dynamic_Resource/qianyu.action">點(diǎn)擊我訪(fǎng)問(wèn)動(dòng)態(tài)資源</a> 
  13.   
  14.  </body> 
  15. </html> 

 

  • 將圖片放到img目錄下,將css放到css目錄下,將js文件放到j(luò)s的目錄下
  • 編寫(xiě)動(dòng)態(tài)資源的這個(gè)工程

 
  1. package com.qy.servlet; 
  2.  
  3. import java.io.IOException; 
  4. import java.io.PrintWriter; 
  5.  
  6. import javax.servlet.ServletException; 
  7. import javax.servlet.http.HttpServlet; 
  8. import javax.servlet.http.HttpServletRequest; 
  9. import javax.servlet.http.HttpServletResponse; 
  10.  
  11. public class qianyuServlet extends HttpServlet { 
  12.  
  13.  public void doGet(HttpServletRequest request, HttpServletResponse response) 
  14.    throws ServletException, IOException { 
  15.             this.doPost(request, response); 
  16.  } 
  17.  
  18.  public void doPost(HttpServletRequest request, HttpServletResponse response) 
  19.    throws ServletException, IOException { 
  20.  
  21.   response.setContentType("text/html;charset=utf-8"); 
  22.   PrintWriter writer=response.getWriter(); 
  23.   writer.write("this is dynamic resource test"); 
  24.   writer.flush(); 
  25.   writer.close();  
  26.  } 
  • 編寫(xiě)配置文件 /conf/nginx.xml文件

 
  1. #虛擬一個(gè)動(dòng)靜分離的機(jī)器 
  2.    server { 
  3.      listen     9999; 
  4.      server_name localhost; 
  5.  
  6.      #表示的是動(dòng)態(tài)資源訪(fǎng)問(wèn)的機(jī)器 
  7.  
  8.       location / { 
  9.             proxy_pass   http://10.7.182.54:8080; 
  10.       } 
  11.     #表示的是非  css和js文件訪(fǎng)問(wèn)的地址 
  12.     location ~ .*\.(htm|html|gif|jpg|jpeg|png|bmp|swf|ioc|rar|zip|txt|flv|mid|doc|ppt|pdf|xls|mp3|wma)$ 
  13.         { 
  14.             root /usr/local/webapp; 
  15.             expires 30d; 
  16.         } 
  17.       #表示的是css和js的訪(fǎng)問(wèn)地址 
  18.       location ~ .*\.(js|css)?$ 
  19.   { 
  20.          root /usr/local/webapp; 
  21.          expires 1h; 
  • 測(cè)試

7、虛擬主機(jī)

「虛擬主機(jī)配置:」


 
  1. server { 
  2.        listen     90; 
  3.        server_name localhost; 
  4.        location / { 
  5.           root qianyu; 
  6.           index qianyu.html; 
  7.        } 
  8.       #做一個(gè)反向代理 
  9.       #表示的是 如果你訪(fǎng)問(wèn)的后綴是 .jpg結(jié)尾的話(huà)那么 就訪(fǎng)問(wèn)下面的另外的服務(wù)器 
  10.         location ~ \.jpg$ { 
  11.             proxy_pass   http://10.7.182.110:8080; 
  12.         } 

客服