亚洲一区精品自拍_2021年国内精品久久_男同十八禁gv在线观看_免费观看a级性爱黄片

當前位置:文章中心>技術(shù)教程
公告通知 新聞快遞 技術(shù)教程 產(chǎn)品展示

關(guān)于 Nginx,你還在背誦那些培訓(xùn)機構(gòu)教給你的內(nèi)容么?

發(fā)布時間:2022-02-11 點擊數(shù):964

關(guān)于 Nginx 你還在背誦著培訓(xùn)班中教給你的內(nèi)容么?面試的時分很多項目都說運用過 Nginx,但是當面試官問你 Nginx 的原理的時分,你還在手足無措么?假如有,那么這篇文章我送給咱們,讓你面試答復(fù) Nginx 的的時分不再慌張,不需求再去背誦那些內(nèi)容了,各位看官預(yù)備好了么?


01、什么是Nginx

咱們來看一下這個百度百科給出的解說:


Nginx (engine x) 是一個高性能的 HTTP 和反向署理 Web 服務(wù)器,一起也提供了 IMAP/POP3/SMTP 服務(wù)。


Nginx 是一款輕量級的 Web 服務(wù)器/反向署理服務(wù)器及電子郵件(IMAP/POP3)署理服務(wù)器,在 BSD-like 協(xié)議下發(fā)行。其特點是占有內(nèi)存少,并發(fā)才能強,事實上 Nginx 的并發(fā)才能確實在同類型的網(wǎng)頁服務(wù)器中體現(xiàn)較好,中國大陸運用 Nginx 網(wǎng)站用戶有:百度、京東、新浪、網(wǎng)易、騰訊、淘寶等。


以上的內(nèi)容是百度百科給出的解說,這個但是現(xiàn)已算的上是很全了,總結(jié)下來就幾點內(nèi)容:


  • HTTP 和反向署理 Web 服務(wù)器
  • IMAP/POP3/SMTP 服務(wù)


02、Nginx 的長處和效果


  • Nginx 運用依據(jù)事情驅(qū)動架構(gòu),使得其能夠支撐數(shù)以百萬等級的TCP連接
  • 高度的模塊化和自由軟件許可證是的第三方模塊層出不窮
  • Nginx 是一個跨平臺服務(wù)器,能夠運轉(zhuǎn)在Linux、Windows、FreeBSD、Solaris、AIX、Mac OS 等操作體系上
  • 這些優(yōu)異的設(shè)計帶來的極大的穩(wěn)定性



03、Nginx的署理


說到署理,首先咱們要清晰一個概念,所謂署理便是一個代表、一個渠道;


此時就設(shè)計到兩個人物,一個是被署理人物,一個是方針人物,被署理人物經(jīng)過這個署理拜訪方針人物完成一些任務(wù)的過程稱為署理操作過程;如同日子中的專賣店~客人到 Adidas 專賣店買了一雙鞋,這個專賣店便是署理,被署理人物便是 Adidas 廠家,方針人物便是用戶。


而署理又分為了2種,一種是正向署理,一種是反向署理


1)正向署理


舉一個經(jīng)典的例子,咱們拜訪國外的網(wǎng)站的時分,是沒有辦法進行拜訪的,這時分是不是就得需求一個署理服務(wù)器,咱們把懇求發(fā)給署理服務(wù)器,署理服務(wù)器去拜訪國外的網(wǎng)站,然后將拜訪到的數(shù)據(jù)傳遞給咱們!


上述這樣的署理形式稱為正向署理,正向署理最大的特點是客戶端非常清晰要拜訪的服務(wù)器地址;服務(wù)器只清楚懇求來自哪個署理服務(wù)器,而不清楚來自哪個具體的客戶端;正向署理形式屏蔽或許躲藏了真實客戶端信息。


正向署理的用處


  • 拜訪本來無法拜訪的資源,如 Google
  • 能夠做緩存,加快拜訪資源
  • 對客戶端拜訪授權(quán),上網(wǎng)進行認證
  • 署理能夠記錄用戶拜訪記錄(上網(wǎng)行為管理),對外躲藏用戶信息


2)反向署理


咱們說完了正向署理之后,咱們再來看一下反向署理,最經(jīng)典的運用,分布式

經(jīng)過布置多臺服務(wù)器來解決拜訪人數(shù)約束的問題;某寶網(wǎng)站中大部分功能也是直接運用Nginx進行反向署理完成的,而且經(jīng)過封裝 Nginx 和其他的組件之后起了個高大上的姓名:Tengine。


這其實便是反向署理的一個經(jīng)典運用。


反向署理的用處


  • 確保內(nèi)網(wǎng)的安全,通常將反向署理作為公網(wǎng)拜訪地址,Web服務(wù)器是內(nèi)網(wǎng)
  • 負載均衡,經(jīng)過反向署理服務(wù)器來優(yōu)化網(wǎng)站的負載


說完了署理,咱們就該來看面試中最常常問到的必須答復(fù)的內(nèi)容。


04、你在作業(yè)中是怎樣對 Nginx 進行裝備的


裝備文件詳解:


  • nginx.conf----------------------Nginx 的根本裝備文件
  • mime.types----------------------MIME 類型相關(guān)的擴展文件
  • fastcgi.conf----------------------與 fastcgi 相關(guān)的裝備
  • proxy.conf----------------------與 proxy 相關(guān)的裝備
  • sites.conf----------------------裝備 Nginx 提供的網(wǎng)站,包括虛擬主機


今天咱們先說首要的這個 nginx.conf 裝備文件,之后再去解說其他的裝備文件。


nginx.conf 裝備文件首要分紅四個部分:


  • main,大局設(shè)置,影響其它部分一切設(shè)置
  • server,主機服務(wù)相關(guān)設(shè)置,首要用于指定虛擬主機域名、IP 和端口
  • location,URL 匹配特定方位后的設(shè)置,反向署理、內(nèi)容篡改相關(guān)設(shè)置
  • upstream,上游服務(wù)器設(shè)置,負載均衡相關(guān)裝備


他們之間的聯(lián)系是:server 承繼 main,location 承繼server;upstream 既不會承繼指令也不會被承繼。


通用裝備如下:

#界說 Nginx 運轉(zhuǎn)的用戶和用戶組,默許由 nobody 賬號運轉(zhuǎn), windows 下面能夠注釋掉。 user  nobody;  #nginx進程數(shù),主張設(shè)置為等于CPU總核心數(shù)。能夠和worker_cpu_affinity配合 worker_processes  1;  #大局過錯日志界說類型,[ debug | info | notice | warn | error | crit ] #error_log  logs/error.log; #error_log  logs/error.log  notice; #error_log  logs/error.log  info;  #進程文件,window下能夠注釋掉 #pid        logs/nginx.pid;  # 一個nginx進程翻開的最多文件描述符(句柄)數(shù)目,理論值應(yīng)該是最多翻開文件數(shù)(體系的值ulimit -n)與nginx進程數(shù)相除, # 但是nginx分配懇求并不均勻,所以主張與ulimit -n的值保持一致。 worker_rlimit_nofile 65535;  #作業(yè)形式與連接數(shù)上限 events {  # 參閱事情模型,use [ kqueue | rtsig | epoll | /dev/poll | select | poll ];  # epoll模型是Linux 2.6以上版別內(nèi)核中的高性能網(wǎng)絡(luò)I/O模型,假如跑在FreeBSD上面,就用kqueue模型。  #use epoll;  #connections 20000;  # 每個進程答應(yīng)的最多連接數(shù)  # 單個進程最大連接數(shù)(最大連接數(shù)=連接數(shù)*進程數(shù))該值受體系進程最大翻開文件數(shù)約束,需求運用命令ulimit -n 檢查當時設(shè)置  worker_connections 65535; }  #設(shè)定http服務(wù)器 http {  #文件擴展名與文件類型映射表  #include 是個主模塊指令,能夠?qū)⒀b備文件拆分并引證,能夠減少主裝備文件的復(fù)雜度  include       mime.types;  #默許文件類型  default_type  application/octet-stream;  #charset utf-8; #默許編碼   #界說虛擬主機日志的格局  #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指令指定nginx是否調(diào)用sendfile函數(shù)來輸出文件,關(guān)于一般運用設(shè)為 on,假如用來進行下載等運用磁盤IO重負載運用,可設(shè)置為off,以平衡磁盤與網(wǎng)絡(luò)I/O處理速度,下降體系的負載。留意:假如圖片顯現(xiàn)不正常把這個改成off。  sendfile        on;  #autoindex on; #敞開目錄列表拜訪,合適下載服務(wù)器,默許封閉。   #防止網(wǎng)絡(luò)堵塞  #tcp_nopush     on;   #長連接超時時刻,單位是秒,默許為0  keepalive_timeout  65;   # gzip緊縮功能設(shè)置  gzip on; #敞開gzip緊縮輸出  gzip_min_length 1k; #最小緊縮文件巨細  gzip_buffers    4 16k; #緊縮緩沖區(qū)  gzip_http_version 1.0; #緊縮版別(默許1.1,前端假如是squid2.5請運用1.0)  gzip_comp_level 6; #緊縮等級  #緊縮類型,默許就現(xiàn)已包括text/html,所以下面就不必再寫了,寫上去也不會有問題,但是會有一個warn。  gzip_types text/plain text/css text/javascript application/json application/javascript application/x-javascript application/xml;  gzip_vary on; //和http頭有聯(lián)系,加個vary頭,給署理服務(wù)器用的,有的瀏覽器支撐緊縮,有的不支撐,所以防止浪費不支撐的也緊縮,所以依據(jù)客戶端的HTTP頭來判斷,是否需求緊縮  #limit_zone crawler $binary_remote_addr 10m; #敞開約束IP連接數(shù)的時分需求運用   # http_proxy服務(wù)大局設(shè)置  client_max_body_size   10m;  client_body_buffer_size   128k;  proxy_connect_timeout   75;  proxy_send_timeout   75;  proxy_read_timeout   75;  proxy_buffer_size   4k;  proxy_buffers   4 32k;  proxy_busy_buffers_size   64k;  proxy_temp_file_write_size  64k;  proxy_temp_path   /usr/local/nginx/proxy_temp 1 2;   # 設(shè)定負載均衡后臺服務(wù)器列表  upstream  backend.com  {  #ip_hash; # 指定支撐的調(diào)度算法  # upstream 的負載均衡,weight 是權(quán)重,能夠依據(jù)機器裝備界說權(quán)重。weigth 參數(shù)表示權(quán)值,權(quán)值越高被分配到的幾率越大。  server   192.168.10.100:8080 max_fails=2 fail_timeout=30s ;  server   192.168.10.101:8080 max_fails=2 fail_timeout=30s ;  }   #虛擬主機的裝備  server {  #監(jiān)聽端口  listen       80;  #域名能夠有多個,用空格離隔  server_name  localhost fontend.com;  # Server Side Include,通常稱為服務(wù)器端嵌入  #ssi on;  #默許編碼  #charset utf-8;  #界說本虛擬主機的拜訪日志  #access_log  logs/host.access.log  main;   # 因為一切的地址都以 / 開頭,所以這條規(guī)則將匹配到一切懇求  location / {  root   html;  index  index.html index.htm;  }   #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;  }   # 圖片緩存時刻設(shè)置  location ~ .*.(gif|jpg|jpeg|png|bmp|swf)$ {  expires 10d;  }   # JS和CSS緩存時刻設(shè)置  location ~ .*.(js|css)?$ {  expires 1h;  }   #署理裝備  # proxy the PHP scripts to Apache listening on 127.0.0.1:80  #location /proxy/ {  #    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;  #    }  #}

上面的裝備文件不需求你每一行都看過來,你需求留意的地方如下:

#作業(yè)形式與連接數(shù)上限 events {  # 參閱事情模型,use [ kqueue | rtsig | epoll | /dev/poll | select | poll ];  # epoll模型是Linux 2.6以上版別內(nèi)核中的高性能網(wǎng)絡(luò)I/O模型,假如跑在FreeBSD上面,就用kqueue模型。  #use epoll;  #connections 20000;  # 每個進程答應(yīng)的最多連接數(shù)  # 單個進程最大連接數(shù)(最大連接數(shù)=連接數(shù)*進程數(shù))該值受體系進程最大翻開文件數(shù)約束,需求運用命令ulimit -n 檢查當時設(shè)置  worker_connections 65535; }  http {  include       mime.types;   #文件擴展名與文件類型映射表  default_type  application/octet-stream; #默許文件類型,默許為text/plain  #access_log off; #取消服務(wù)日志  log_format myFormat '$remote_addr–$remote_user [$time_local] $request $status $body_bytes_sent $http_referer $http_user_agent $http_x_forwarded_for'; #自界說格局  access_log log/access.log myFormat;  #combined為日志格局的默許值  sendfile on;   #答應(yīng)sendfile方式傳輸文件,默許為off,能夠在http塊,server塊,location塊。  sendfile_max_chunk 100k;  #每個進程每次調(diào)用傳輸數(shù)量不能大于設(shè)定的值,默許為0,即不設(shè)上限。  keepalive_timeout 65;  #連接超時時刻,默許為75s,能夠在http,server,location塊。   upstream mysvr {  server 127.0.0.1:7878;  server 192.168.10.121:3333 backup;  #熱備  }  error_page 404 https://www.baidu.com; #過錯頁   server {  keepalive_requests 120; #單連接懇求上限次數(shù)。  listen       4545;   #監(jiān)聽端口  server_name  127.0.0.1;   #監(jiān)聽地址  location  ~*^.+$ {       #懇求的url過濾,正則匹配,~為區(qū)別巨細寫,~*為不區(qū)別巨細寫。  #root path;  #根目錄  #index vv.txt;  #設(shè)置默許頁  proxy_pass  http://mysvr;  #懇求轉(zhuǎn)向mysvr 界說的服務(wù)器列表  deny 127.0.0.1;  #回絕的ip  allow 172.18.5.54; #答應(yīng)的ip  }  }  }

有時分面試官會問你,你們是怎樣修改裝備文件完成負載均衡的?


經(jīng)過在 upstream 參數(shù)中添加的運用服務(wù)器 IP 后添加指定參數(shù)即可完成,如:

upstream tomcatserver1 {  server 192.168.72.49:8080 weight=3;  server 192.168.72.49:8081;  }   server {  listen       80;  server_name  8080.max.com;  #charset koi8-r;  #access_log  logs/host.access.log  main;  location / {  proxy_pass   http://tomcatserver1;  index  index.html index.htm;  }  }

經(jīng)過以上裝備,便能夠完成,在拜訪 8080.max.com 這個網(wǎng)站時,由于裝備了 proxy_pass 地址,一切懇求都會先經(jīng)過 Nginx 反向署理服務(wù)器,在服務(wù)器將懇求轉(zhuǎn)發(fā)給目的主機時,讀取 upstream 為 tomcatsever1 的地址,讀取分發(fā)策略,裝備 tomcat1 權(quán)重為 3,所以 Nginx 會將大部分懇求發(fā)送給 49 服務(wù)器上的 tomcat1,也便是 8080 端口;較少部分給 tomcat2 來完成有條件的負載均衡,當然這個條件便是服務(wù)器 1、2 的硬件指數(shù)處理懇求才能。


面試官又問,你們是怎樣裝備完成反向署理的呢?

 server {  listen       80;  server_name  tomcat1.com;  #charset koi8-r;  #access_log  logs/host.access.log  main;  location  / {  proxy_pass   http://127.0.0.1:8280;  index  index.html index.htm;  }  } server {  listen       80;  server_name  tomcat2.com;  #charset koi8-r;  #access_log  logs/host.access.log  main;  location / {  proxy_pass   http://127.0.0.1:8281;  index  index.html index.htm;  }  }
  1. 翻開 /conf/nainx.conf 文件,刪去 server{ …… },或許注銷掉
  2. 重新添加 server{  }
  3. listen: 監(jiān)聽的端口號
  4. server_name: 拜訪域名
  5. location :這里裝備為 /   直接匹配端口下的默許 ROOT 下的項目,
  6. proxy_pass  :為項目的實踐拜訪地址


然后重啟 Nginx 服務(wù)器就能夠啦!


有時分面試官就會問你,你在運用 Nginx 的時分做過哪些裝備,在裝備文件中改動過那里,都有什么樣子的效果,把列出來的這一行代碼解說給面試官聽,那么至少你在面試官面前,現(xiàn)已把 Nginx 的比較重要的點解說了一下了,這樣也能添加咱們?nèi)肼毜囊恍﹦偎恪?