<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      Ngnix常用配置及和基本功能講解

      Ngnix已經廣泛應用于J-one和Jdos的環境部署上,本文對Ngnix的常用的配置和基本功能進行講解,適合Ngnix入門學習。

      1 核心配置

      找到Nginx安裝目錄下的conf目錄下nginx.conf文件,Ngnix的基本功能配置是由它提供的。

      1.1 配置文件結構

      Nginx的配置文件(conf/nginx.conf)整體上分為如下幾個部分:

      配置層級圖如下所示。

      1.2 配置文件示例

      一個比較全的配置文件示例如下。

      
      
      1. # 以下是全局段配置
      2. #user administrator administrators; #配置用戶或者組,默認為nobody nobody。
      3. #worker_processes 2; #設置進程數,默認為1
      4. #pid /nginx/pid/nginx.pid; #指定nginx進程運行文件存放地址
      5. error_log log/error.log debug; #制定日志路徑,級別:debug|info|notice|warn|error|crit|alert|emerg
      6. # events段配置信息
      7. events {
      8. accept_mutex on; #設置網路連接序列化,防止驚群現象發生,默認為on
      9. multi_accept on; #設置一個進程是否同時接受多個網絡連接,默認為off
      10. #use epoll; #事件驅動模型,select|poll|kqueue|epoll|resig|/dev/poll|eventport
      11. worker_connections 1024; #最大連接數,默認為512
      12. }
      13. # http、配置請求信息
      14. http {
      15. include mime.types; #文件擴展名與文件類型映射表
      16. default_type application/octet-stream; #默認文件類型,默認為text/plain
      17. #access_log off; #取消服務日志
      18. log_format myFormat '$remote_addr–$remote_user [$time_local] $request $status $body_bytes_sent $http_referer $http_user_agent $http_x_forwarded_for'; #自定義格式
      19. access_log log/access.log myFormat; #combined為日志格式的默認值
      20. sendfile on; #允許sendfile方式傳輸文件,默認為off,可以在http塊,server塊,location塊。
      21. sendfile_max_chunk 100k; #每個進程每次調用傳輸數量不能大于設定的值,默認為0,即不設上限。
      22. keepalive_timeout 65; #連接超時時間,默認為75s,可以在http,server,location塊。
      23. upstream mysvr {
      24. server 127.0.0.1:7878;
      25. server 192.168.10.121:3333 backup; #熱備
      26. }
      27. error_page 404 https://www.baidu.com; #錯誤頁
      28. # 第一個Server區塊開始,表示一個獨立的虛擬主機站點
      29. server {
      30. keepalive_requests 120; #單連接請求上限次數。
      31. listen 4545; #監聽端口
      32. server_name 127.0.0.1; #監聽地址
      33. location ~*^.+$ { #請求的url過濾,正則匹配,~為區分大小寫,~*為不區分大小寫。
      34. #root path; #根目錄
      35. #index vv.txt; #設置默認頁
      36. proxy_pass http://mysvr; #請求轉向mysvr 定義的服務器列表
      37. deny 127.0.0.1; #拒絕的ip
      38. allow 172.18.5.54; #允許的ip
      39. }
      40. }
      41. }

      1.3 locat路徑映射講解

      1.3.1格式:

      location [ = | ~ | ~ | !~ | !~ | @ ] uri {…}

      1.3.2解釋:

      = 表示精確匹配,如果找到,立即停止搜索并立即處理此請求。
      ~ 表示執行一個正則匹配,區分大小寫匹配
      ~ 表示執行一個正則匹配,不區分大小寫匹配
      !~ 區分大小寫不匹配
      !~
       不區分大小寫不匹配
      ^~ 即表示只匹配普通字符(空格)。使用前綴匹配,^表示“非”,即不查詢正則表達式。如果匹配成功,則不再匹配其他location。
      @ 指定一個命名的location,一般只用于內部重定向請求。例如 error_page, try_files
      uri 是待匹配的請求字符串,可以不包含正則表達式,也可以包含正則表達式;

      1.3.3優先級和示例:

      [不加] < [~/~*] < [^~] < [=]
      示例如下:

      
      
      1. location = / {
      2. # 精確匹配/,主機名后面不能帶任何字符串 /
      3. # 只匹配http://abc.com
      4. # http://abc.com [匹配成功]
      5. # http://abc.com/index [匹配失敗]
      6. }
      7. location ^~ /img/ {
      8. #以 /img/ 開頭的請求,都會匹配上
      9. #http://abc.com/img/a.jpg [成功]
      10. #http://abc.com/img/b.mp4 [成功]
      11. }
      12. location ~* /Example/ {
      13. # 則會忽略 uri 部分的大小寫
      14. #http://abc.com/test/Example/ [匹配成功]
      15. #http://abc.com/example/ [匹配成功]
      16. }
      17. location /documents {
      18. # 如果有正則表達式可以匹配,則優先匹配正則表達式。
      19. #http://abc.com/documentsabc [匹配成功]
      20. }
      21. location / {
      22. #http://abc.com/abc [匹配成功]
      23. }

      2 反向代理

      2.1 反向代理概念:

      反向代理(Reverse Proxy)是指以代理服務器來接受internet上的連接請求,然后將請求轉發給內部網絡上的服務器,并將從服務器上得到的結果返回給internet上請求連接的客戶端。真實的服務器不能直接被外部網絡訪問,所以需要一臺代理服務器,而代理服務器能被外部網絡訪問的同時又跟真實服務器在同一個網絡環境,當然也可能是同一臺服務器,端口不同而已。
      反向代理通過proxy_pass指令來實現。

      2.2 反向代理示例:

      
      
      1. server {
      2. listen 80;
      3. server_name localhost;
      4. location / {
      5. proxy_pass http://localhost:8081;
      6. proxy_set_header Host $host:$server_port;#為請求頭添加Host字段,用于指定請求服務器的域名/IP地址和端口號。
      7. # 設置用戶ip地址
      8. proxy_set_header X-Forwarded-For $remote_addr;#為請求頭添加XFF字段,值為客戶端的IP地址。
      9. # 當請求服務器出錯去尋找其他服務器
      10. proxy_next_upstream error timeout invalid_header http_500 http_502 http_503;
      11. }

      當我們訪問localhost的時候,ngnix就將我們的請求轉到 localhost:8081了

      3 負載均衡

      3.1 負載均衡概念:

      當有2臺或以上服務器時,代理服務器根據規則將請求分發到指定的服務器上處理。

      3.2 負載均衡策略及示例:

      Nginx目前支持多種負載均衡策略,這里講解常用的6種。

      3.2.1RR(round robin :輪詢 默認):

      每個請求按時間順序逐一分配到不同的后端服務器,也就是說第一次請求分配到第一臺服務器上,第二次請求分配到第二臺服務器上,如果只有兩臺服務器,第三次請求繼續分配到第一臺上,這樣循環輪詢下去,也就是服務器接收請求的比例是 1:1, 如果后端服務器down掉,能自動剔除。輪詢是默認配置,不需要太多的配置
      同一個項目分別使用8081和8082端口啟動項目

      
      
      1. upstream web_servers {
      2. server localhost:8081;
      3. server localhost:8082;
      4. }
      5. server {
      6. listen 80;
      7. server_name localhost;
      8. #access_log logs/host.access.log main;
      9. location / {
      10. proxy_pass http://web_servers;
      11. proxy_set_header Host $host:$server_port;
      12. }
      13. }

      3.2.2 熱備:

      假設有2臺服務器,當一臺服務器發生事故時,才啟用第二臺服務器給提供服務。服務器處理請求的順序:AAAAAA突然A掛了,服務器處理請求的順序:BBBBBBBBBBBBBB…..

      
      
      1. upstream web_servers {
      2. server 127.0.0.1:7878;
      3. server 192.168.10.121:3333 backup; #熱備
      4. }

      3.2.3 權重

      跟據配置的權重的大小而分發給不同服務器不同數量的請求。如果不設置,則默認為1。下面服務器的請求順序為:ABBABBABBABBABB….。

      
      
      1. upstream web_servers {
      2. server localhost:8081 weight=1;
      3. server localhost:8082 weight=2;
      4. }

      3.2.4 ip_hash

      這樣每個ip地址固定訪問一個后端服務器,可以解決session的問題。

      
      
      1. upstream test {
      2. ip_hash;
      3. server localhost:8080;
      4. server localhost:8081;
      5. }

      3.2.5 fair(第三方)

      按后端服務器的響應時間來分配請求,響應時間短的優先分配。這個配置是為了更快的給用戶響應。

      
      
      1. upstream backend {
      2. fair;
      3. server localhost:8080;
      4. server localhost:8081;
      5. }

      3.2.6 url_hash(第三方)

      按訪問url的hash結果來分配請求,使每個url定向到同一個后端服務器,后端服務器為緩存時比較有效。在upstream中加入hash語句,hash_method是使用的hash算法

      
      
      1. upstream backend {
      2. hash_method crc32;
      3. hash $request_uri;
      4. server localhost:8080;
      5. server localhost:8081;
      6. }

      以上6種負載均衡各自適用不同情況下單獨或者混合使用,可以根據實際情況選擇使用,fair和url_hash需要安裝第三方模塊才能使用。

      4 動靜分離:

      4.1 動靜分離概念:

      動靜分離是指在web服務器架構中,將靜態頁面與動態頁面或者靜態內容接口和動態內容接口分開不同系統訪問的架構設計方法,進而提升整個服務訪問性能和可維護性。

      4.2 動靜分離示例:

      
      
      1. upstream web_servers {
      2. server localhost:8081;
      3. server localhost:8082;
      4. }
      5. server {
      6. listen 80;
      7. server_name localhost;
      8. set $doc_root /usr/local/var/www;
      9. location ~* \.(gif|jpg|jpeg|png|bmp|ico|swf|css|js)$ {
      10. root $doc_root/img;
      11. }
      12. location / {
      13. proxy_pass http://web_servers;
      14. proxy_set_header Host $host:$server_port;
      15. }
      16. error_page 500 502 503 504 /50x.html; #出現 500 502 503 504錯誤時走內部跳轉
      17. location = /50x.html {
      18. root $doc_root;
      19. }
      20. }

      結果:訪問http://localhost/test.jpg 時直接返回/usr/local/var/www/img路徑下的圖片.
      訪問http://localhost/index.html 就會訪問后端服務器(tomcat等)

      5 其他常用的指令:

      5.1.return指令

      返回http狀態碼和可選的第二個參數可以是重定向的URL

      
      
      1. return code [text];
      2. return code URL;
      3. return URL;
      4. 例如:
      5. location / {
      6. return 404; # 直接返回狀態碼
      7. }
      8. location / {
      9. return 404 "pages not found"; # 返回狀態碼 + 一段文本
      10. }
      11. location / {
      12. return 302 /bbs ; # 返回狀態碼 + 重定向地址
      13. }
      14. location / {
      15. return https://www.baidu.com ; # 返回重定向地址
      16. }

      5.2 rewrite指令

      重寫URI請求 rewrite,通過使用rewrite指令在請求處理期間多次修改請求URI,該指令具有一個可選參數和兩個必需參數。
      第一個(必需)參數是請求URI必須匹配的正則表達式。
      第二個參數是用于替換匹配URI的URI。
      可選的第三個參數重寫策略

      • last 重寫后的 URL 發起新請求,再次進入 server 段,重試 location 的中的匹配;
      • break 直接使用重寫后的 URL ,不再匹配其它 location 中語句;
      • redirect 返回302臨時重定向;
      • permanent 返回301永久重定向;
      
      
      1. location /users/ {
      2. rewrite ^/users/(.*)$ /show?user=$1 break;
      3. }

      5.3 error_page指令

      使用error_page指令,您可以配置NGINX返回自定義頁面以及錯誤代碼,替換響應中的其他錯誤代碼,或將瀏覽器重定向到其他URI。在以下示例中,error_page指令指定要返回404頁面錯誤代碼的頁面(/404.html)。

      
      
      1. server{
      2. error_page 500 502 503 504 /50x.html;
      3. location =/50x.html{
      4. root html;
      5. }
      6. }

      5.4 日志

      訪問日志:需要開啟壓縮 gzip on; 否則不生成日志文件,打開log_format、access_log注釋

      
      
      1. log_format main '$remote_addr - $remote_user [$time_local] "$request" '
      2. '$status $body_bytes_sent "$http_referer" '
      3. '"$http_user_agent" "$http_x_forwarded_for"';
      4. access_log /usr/local/etc/nginx/logs/host.access.log main;
      5. gzip on

      5.5 deny 、allow指令

      
      
      1. #禁止訪問某個目錄
      2. location / {
      3. allow 192.168.0.0;
      4. allow 127.0.0.1;
      5. deny all;
      6. #這段配置值允許192.168.0./24網段和127.0.0.1的請求,其他來源IP全部拒絕。
      7. }

      5.6 內置變量

      nginx的配置文件中可以使用的內置變量以美元符$開始。其中,大部分預定義的變量的值由客戶端發送攜帶。
      $args :#這個變量等于請求行中的參數,同$query_string
      $content_length :請求頭中的Content-length字段。
      $content_type :請求頭中的Content-Type字段。
      $document_root :當前請求在root指令中指定的值。
      $host :請求行的主機名,為空則為請求頭字段 Host 中的主機名,再為空則與請求匹配的server_name
      $http_user_agent :客戶端agent信息
      $http_cookie :客戶端cookie信息
      $limit_rate :這個變量可以限制連接速率。
      $request_method :客戶端請求的動作,通常為GET或POST。
      $remote_addr :客戶端的IP地址。
      $remote_port :客戶端的端口。
      $remote_user :已經經過Auth Basic Module驗證的用戶名。
      $request_filename :當前請求的文件路徑,由root或alias指令與URI請求生成。
      $scheme :HTTP方法(如http,https)。
      $server_protocol :請求使用的協議,通常是HTTP/1.0或HTTP/1.1。
      $server_addr :服務器地址,在完成一次系統調用后可以確定這個值。
      $server_name :服務器名稱。
      $server_port :請求到達服務器的端口號。
      $request_uri :包含請求參數的原始URI,不包含主機名,如:”/foo/bar.php?arg=baz”。
      $uri :不帶請求參數的當前URI,$uri不包含主機名,如”/foo/bar.html”。
      $document_uri :與$uri相同

      6 總結

      Ngnix是一款高性能反向代理服務器,學習它非常有必要,本文講解了Ngnix核心配置,介紹了反向代理,負載均衡,動靜分離三大功能,最后擴展了一些常用的指令。本文介紹了Ngnix的基礎用法,后續的Ngnix內核以及原理部分有待研究。

      作者:京東物流 殷世杰

      來源:京東云開發者社區 自猿其說 Tech 轉載請注明來源

      posted @ 2024-01-19 14:34  京東云技術團隊  閱讀(90)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 天天爽夜夜爽人人爽曰| 狠狠综合久久久久综| 炎陵县| 久久久无码精品亚洲日韩蜜桃| 国产精品呻吟一区二区三区| 久久精品国产久精国产69| 欧美人成精品网站播放| 色噜噜狠狠一区二区三区果冻| 亚洲精品一区二区美女| 免费人成自慰网站| 欧洲人与动牲交α欧美精品| 国产自拍一区二区三区在线| 年轻女教师hd中字3| 欧美激情内射喷水高潮| 男女猛烈激情xx00免费视频| 成 人 色 网 站免费观看| 绥中县| 天天做天天爱夜夜爽导航| 99久久亚洲综合精品成人网| 久久这里只精品热免费99| 亚洲a免费| 扒开双腿猛进入喷水高潮叫声| 疯狂的欧美乱大交| 国产精品一二三区蜜臀av| 亚洲男女羞羞无遮挡久久丫| 国产普通话对白刺激| 亚洲一区二区三区蜜桃臀| 九九热在线视频免费播放| 亚洲va中文字幕无码久久不卡| 久久精品丝袜高跟鞋| 中文字幕国产精品第一页| 中文字幕在线视频不卡一区二区| 久久av色欲av久久蜜桃网| 国产精品男女午夜福利片| 国产精品18久久久久久麻辣| 深夜福利资源在线观看| 中年国产丰满熟女乱子正在播放| 日韩卡1卡2卡三卡免费网站| 91福利一区福利二区| 老司机午夜福利视频| 久久精品无码一区二区小草|