您現在的位置是:電腦技術吧?>? 編程技術 ??>??nginx配置多個server,一臺nginx支持多少并發??>??正文詳情

nginx配置多個server,一臺nginx支持多少并發

臧學海2019-11-26 15:25:25 人圍觀
簡介nginx和tomcat區別程序類人猿對nginx配置非常熟悉,但對于普通用戶來說,nginx配置是一件很奇怪的事情。Nginx是一個高性能的HTTP和反向代理服務器,以及IMAP/POPnginx反向代理配置教程

  程序猿對nginx 配置可以說是十分熟悉,但是對于普通用戶而言,nginx 配置是一件極陌生的事情,Nginx是一個高性能的HTTP和反向代理服務器,也是一個IMAP/POP3/SMTP服務器。對于nginx配置,你需要了解nginx配置文件詳解。和超人軟件站小編一起來了解下吧。

  Nginx配置文件nginx.conf中文詳解

  配置文件主要由四部分組成:main(全區設置),server(主機配置),upstream(負載均衡服務器設置),和location(URL匹配特定位置設置)。

  1)全局變量

  #Nginx的worker進程運行用戶以及用戶組

  #user nobody nobody;

  #Nginx開啟的進程數

  worker_processes 1;

  #worker_processes auto;

  #以下參數指定了哪個cpu分配給哪個進程,一般來說不用特殊指定。如果一定要設的話,用0和1指定分配方式.

  #這樣設就是給1-4個進程分配單獨的核來運行,出現第5個進程是就是隨機分配了。eg:

  #worker_processes 4 #4核CPU

  #worker_cpu_affinity 0001 0010 0100 1000

  #定義全局錯誤日志定義類型,[debug|info|notice|warn|crit]

  #error_log logs/error.log info;

  #指定進程ID存儲文件位置

  #pid logs/nginx.pid;

  #一個nginx進程打開的最多文件描述符數目,理論值應該是最多打開文件數(ulimit -n)與nginx進程數相除,但是nginx分配請求并不是那么均勻,所以最好與ulimit -n的值保持一致。

  #vim /etc/security/limits.conf

  # * soft nproc 65535

  # * hard nproc 65535

  # * soft nofile 65535

  # * hard nofile 65535

  worker_rlimit_nofile 65535;

  2)事件配置

  events {

  #use [ kqueue | rtsig | epoll | /dev/poll | select | poll ]; epoll模型是Linux 2.6以上版本內核中的高性能網絡I/O模型,如果跑在FreeBSD上面,就用kqueue模型。

  use epoll;

  #每個進程可以處理的最大連接數,理論上每臺nginx服務器的最大連接數為worker_processes*worker_connections。理論值:worker_rlimit_nofile/worker_processes

  #注意:最大客戶數也由系統的可用socket連接數限制(~ 64K),所以設置不切實際的高沒什么好處

  worker_connections 65535;

  #worker工作方式:串行(一定程度降低負載,但服務器吞吐量大時,關閉使用并行方式)

  #multi_accept on;

  }

  3)http參數

  #文件擴展名與文件類型映射表

  include mime.types;

  #默認文件類型

  default_type application/octet-stream;

  #日志相關定義

  #log_format main $remote_addr - $remote_user [$time_local] $request

  # $status $body_bytes_sent $http_referer

  # $http_user_agent $http_x_forwarded_for;

  #定義日志的格式。后面定義要輸出的內容。

  #1.$remote_addr 與$http_x_forwarded_for 用以記錄客戶端的ip地址;

  #2.$remote_user :用來記錄客戶端用戶名稱;

  #3.$time_local :用來記錄訪問時間與時區;

  #4.$request :用來記錄請求的url與http協議;

  #5.$status :用來記錄請求狀態;

  #6.$body_bytes_sent :記錄發送給客戶端文件主體內容大小;

  #7.$http_referer :用來記錄從那個頁面鏈接訪問過來的;

  #8.$http_user_agent :記錄客戶端瀏覽器的相關信息

  #連接日志的路徑,指定的日志格式放在最后。

  #access_log logs/access.log main;

  #只記錄更為嚴重的錯誤日志,減少IO壓力

  error_log logs/error.log crit;

  #關閉日志

  #access_log off;

  #默認編碼

  #charset utf-8;

  #服務器名字的hash表大小

  server_names_hash_bucket_size 128;

  #客戶端請求單個文件的最大字節數

  client_max_body_size 8m;

  #指定來自客戶端請求頭的hearerbuffer大小

  client_header_buffer_size 32k;

  #指定客戶端請求中較大的消息頭的緩存最大數量和大小。

  large_client_header_buffers 4 64k;

  #開啟高效傳輸模式。

  sendfile on;

  #防止網絡阻塞

  tcp_nopush on;

  tcp_nodelay on;

  #客戶端連接超時時間,單位是秒

  keepalive_timeout 60;

  #客戶端請求頭讀取超時時間

  client_header_timeout 10;

  #設置客戶端請求主體讀取超時時間

  client_body_timeout 10;

  #響應客戶端超時時間

  send_timeout 10;

  #FastCGI相關參數是為了改善網站的性能:減少資源占用,提高訪問速度。

  fastcgi_connect_timeout 300;

  fastcgi_send_timeout 300;

  fastcgi_read_timeout 300;

  fastcgi_buffer_size 64k;

  fastcgi_buffers 4 64k;

  fastcgi_busy_buffers_size 128k;

  fastcgi_temp_file_write_size 128k;

  #gzip模塊設置

  #開啟gzip壓縮輸出

  gzip on;

  #最小壓縮文件大小

  gzip_min_length 1k;

  #壓縮緩沖區

  gzip_buffers 4 16k;

  #壓縮版本(默認1.1,前端如果是squid2.5請使用1.0)

  gzip_http_version 1.0;

  #壓縮等級 1-9 等級越高,壓縮效果越好,節約寬帶,但CPU消耗大

  gzip_comp_level 2;

  #壓縮類型,默認就已經包含text/html,所以下面就不用再寫了,寫上去也不會有問題,但是會有一個warn。

  gzip_types text/plain application/x-javascript text/css application/xml;

  #前端緩存服務器緩存經過壓縮的頁面

  gzip_vary on;

  4)虛擬主機基本設置

  #虛擬主機定義

  server {

  #監聽端口

  listen 80;

  #訪問域名

  server_name localhost;

  #編碼格式,若網頁格式與此不同,將被自動轉碼

  #charset koi8-r;

  #虛擬主機訪問日志定義

  #access_log logs/host.access.log main;

  #對URL進行匹配

  location / {

  #訪問路徑,可相對也可絕對路徑

  root html;

  #首頁文件。以下按順序匹配

  index index index.htm;

  }

  #錯誤信息返回頁面

  #error_page 404 /404;

  # redirect server error pages to the static page /50x

  #

  error_page 500 502 503 504 /50x;

  location = /50x {

  root html;

  }

  #訪問URL以.php結尾則自動轉交給127.0.0.1

  # proxy the PHP scripts to Apache listening on 127.0.0.1:80

  #

  #location ~ \.php$ {

  # proxy_pass http://127.0.0.1;

  #}

  #php腳本請求全部轉發給FastCGI處理

  # 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;

  #}

  #禁止訪問.ht頁面 (需ngx_http_access_module模塊)

  # deny access to .htaccess files, if Apaches document root

  # concurs with nginxs one

  #

  #location ~ /\.ht {

  # deny all;

  #}

  }

  #HTTPS虛擬主機定義

  # 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 index.htm;

  # }

  #}

  5)Nignx狀態監控

  #Nginx運行狀態,StubStatus模塊獲取Nginx自啟動的工作狀態(編譯時要開啟對應功能)

  #location /NginxStatus {

  # #啟用StubStatus的工作訪問狀態

  # stub_status on;

  # #指定StubStaus模塊的訪問日志文件

  # access_log logs/Nginxstatus.log;

  # #Nginx認證機制(需Apache的htpasswd命令生成)

  # #auth_basic NginxStatus;

  # #用來認證的密碼文件

  # #auth_basic_user_file ../htpasswd;

  #}

  訪問:http://IP/NginxStatus(測試就不加密碼驗證相關)

  6)反向代理

  #以下配置追加在HTTP的全局變量中

  #nginx跟后端服務器連接超時時間(代理連接超時)

  proxy_connect_timeout 5;

  #后端服務器數據回傳時間(代理發送超時)

  proxy_send_timeout 5;

  #連接成功后,后端服務器響應時間(代理接收超時)

  proxy_read_timeout 60;

  #設置代理服務器(nginx)保存用戶頭信息的緩沖區大小

  proxy_buffer_size 16k;

  #proxy_buffers緩沖區,網頁平均在32k以下的話,這樣設置

  proxy_buffers 4 32k;

  #高負荷下緩沖大小(proxy_buffers*2)

  proxy_busy_buffers_size 64k;

  #設定緩存文件夾大小,大于這個值,將從upstream服務器傳

  proxy_temp_file_write_size 64k;

  #反向代理緩存目錄

  proxy_cache_path /data/proxy/cache levels=1:2 keys_zone=cache_one:500m inactive=1d max_size=1g;

  #levels=1:2 設置目錄深度,第一層目錄是1個字符,第2層是2個字符

  #keys_zone:設置web緩存名稱和內存緩存空間大小

  #inactive:自動清除緩存文件時間。

  #max_size:硬盤空間最大可使用值。

  #指定臨時緩存文件的存儲路徑(路徑需和上面路徑在同一分區)

  proxy_temp_path /data/proxy/temp

  #服務配置

  server {

  #偵聽的80端口

  listen 80;

  server_name localhost;

  location / {

  #反向代理緩存設置命令(proxy_cache zone|off,默認關閉所以要設置)

  proxy_cache cache_one;

  #對不同的狀態碼緩存不同時間

  proxy_cache_valid 200 304 12h;

  #設置以什么樣參數獲取緩存文件名

  proxy_cache_key $host$uri$is_args$args;

  #后7端的Web服務器可以通過X-Forwarded-For獲取用戶真實IP

  proxy_set_header Host $host;

  proxy_set_header X-Real-IP $remote_addr;

  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

  #代理設置

  proxy_pass http://IP;

  #文件過期時間控制

  expires 1d;

  }

  #配置手動清楚緩存(實現此功能需第三方模塊 ngx_cache_purge)

  #http://www.123.com/2017/0316/17訪問

  #http://www.123.com/purge/2017/0316/17清楚URL緩存

  location ~ /purge(/.*) {

  allow 127.0.0.1;

  deny all;

  proxy_cache_purge cache_one $host$1$is_args$args;

  }

  #設置擴展名以.jsp、.php、.jspx結尾的動態應用程序不做緩存

  location ~.*\.(jsp|php|jspx)?$ {

  proxy_set_header Host $host;

  proxy_set_header X-Real-IP $remote_addr;

  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

  proxy_pass http://http://IP;

  }

  7)負載均衡

  #負載均衡服務器池

  upstream my_server_pool {

  #調度算法

  #1.輪循(默認)(weight輪循權值)

  #2.ip_hash:根據每個請求訪問IP的hash結果分配。(會話保持)

  #3.fair:根據后端服務器響應時間最短請求。(upstream_fair模塊)

  #4.url_hash:根據訪問的url的hash結果分配。(需hash軟件包)

  #參數:

  #down:表示不參與負載均衡

  #backup:備份服務器

  #max_fails:允許最大請求錯誤次數

  #fail_timeout:請求失敗后暫停服務時間。

  server 192.168.1.109:80 weight=1 max_fails=2 fail_timeout=30;

  server 192.168.1.108:80 weight=2 max_fails=2 fail_timeout=30;

  }

  #負載均衡調用

  server {

  ...

  location / {

  proxy_pass http://my_server_pool;

  }

  }

  8)URL重寫

  #根據不同的瀏覽器URL重寫

  if($http_user_agent ~ Firefox){

  rewrite ^(.*)$ /firefox/$1 break;

  }

  if($http_user_agent ~ MSIE){

  rewrite ^(.*)$ /msie/$1 break;

  }

  #實現域名跳轉

  location / {

  rewrite ^/(.*)$ https://web8.example.com$1 permanent;

  }

  9)IP限制

  #限制IP訪問

  location / {

  deny 192.168.0.2;

  allow 192.168.0.0/24;

  allow 192.168.1.1;

  deny all;

  }

  10)Nginx相關命令

  #啟動nginx

  nginx

  #關閉nginx

  nginx -s stop

  #平滑重啟

  kill -HUP `cat /usr/local/nginx/logs/nginx.pid`

  11)Nginx啟動腳本

  #!/bin/bash

  #chkconfig: 2345 80 90

  #description:auto_run

  PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin

  export PATH

  # Check if user is root

  if [ $(id -u) != 0 ]; then

  echo Error: You must be root to run this script!\n

  exit 1

  fi

  NGINXDAEMON=/usr/local/nginx/sbin/nginx

  PIDFILE=/usr/local/nginx/logs/nginx.pid

  function_start()

  {

  echo -en \033[32;49;1mStarting nginx......\n

  echo -en \033[39;49;0m

  if [ -f $PIDFILE ]; then

  printf Nginx is runing!\n

  exit 1

  else

  $NGINXDAEMON

  printf Nginx is the successful start!\n

  fi

  }

  function_stop()

  {

  echo -en \033[32;49;1mStoping nginx......\n

  echo -en \033[39;49;0m

  if [ -f $PIDFILE ]; then

  kill `cat $PIDFILE`

  printf Nginx program is stoped\n

  else

  printf Nginx program is not runing!\n

  fi

  }

  function_reload()

  {

  echo -en \033[32;49;1mReload nginx......\n

  echo -en \033[39;49;0m

  function_stop

  function_start

  }

  function_restart()

  {

  echo -en \033[32;49;1mRestart nginx......\n

  echo -en \033[39;49;0m

  printf Reload Nginx configure...\n

  $NGINXDAEMON -t

  kill -HUP `cat $PIDFILE`

  printf Nginx program is reloding!\n

  }

  function_kill()

  {

  killall nginx

  }

  function_status()

  {

  if ! ps -ef|grep -v grep|grep nginx: /dev/null 21

  then

  printf Nginx is down!!!\n

  else

  printf Nginx is running now!\n

  fi

  }

  if [ $1 = start ]; then

  function_start

  elif [ $1 = stop ]; then

  function_stop

  elif [ $1 = reload ]; then

  function_reload

  elif [ $1 = restart ]; then

  function_restart

  elif [ $1 = kill ]; then

  function_kill

  elif [ $1 = status ]; then

  function_status

  else

  echo -en \033[32;49;1m Usage: nginx {start|stop|reload|restart|kill|status}\n

  echo -en \033[39;49;0m

  fi

版權聲明:本文由 臧學海 整理編輯。

原標題:nginx多站點配置,nginx菜鳥教程

轉載注明出處:http://www.dn9ww09s.icu/program/14492.html

文章評論

    共有條評論來說兩句吧...

    用戶名:

    驗證碼:

作者推薦

  • 字體排版,字體排版技巧

    字體排版,字體排版技巧 相關圖片各種字體去年,JDC生產了很多優秀的五梅娘。。。不,H5,我們都很努力,當然,我們也積累了一些經驗和教訓。今天,從字體、排版、動態效果、音效、適配類型和創意等方面,結合文...

  • word中間打字后面消失,word文檔前面打字后面消失

    word中間打字后面消失,word文檔前面打字后面消失 相關圖片word文檔打字不顯示在使用word文檔輸入內容的過程中,我們有時會遇到單詞輸入后消失的情況。怎么了?如果打字后的單詞消失了,我該怎么辦?事實上,打字后的單詞會消失文檔中打字...

  • 設計師必備,設計師必備品

    設計師必備,設計師必備品 相關圖片設計師必備技能今天推薦的七個工件,包括經典的和新的,大致貫穿了整個UI設計的工作流程。從排版、配色、裁剪到注釋、預覽,都是由相應的良心工件推薦的,非常適合新手UI設計師...

  • 美團外賣打賞取消了嗎,為什么有些騎手打賞不了

    美團外賣打賞取消了嗎,為什么有些騎手打賞不了 相關圖片美團打賞騎手他知道是誰嗎近日,為了督促外賣男孩更好地為用戶服務,美團外賣推出了獎勵外賣男孩的功能。美團外賣的車手獎勵在哪里?接下來,超人將為我們帶來Android版美團外賣...

  • win10系統平板模式,win10系統怎么退出平板模式

    win10系統平板模式,win10系統怎么退出平板模式 相關圖片win10平板模式怎么關剛剛升級win10系統的用戶對新版windows10有一定的了解。超人小編認為,win10最大的特點是可以同時應用于平板電腦和個人電腦,使桌面的桌面可以像平板電windows10平板...

  • 框架,Php框架

    框架,Php框架 相關圖片框架圖片大全本文主要介紹了在Python中實現簡單狀態框架的方法,涉及到Python狀態框架的實現技巧,具有一定的參考價值,需要的朋友可以參考下面的例子來描述在Pythonhtml簡單框架代碼...

  • win7系統怎么設置路由器上網,win7如何設置路由器wifi

    win7系統怎么設置路由器上網,win7如何設置路由器wifi 相關圖片wind7系統怎樣連接路由器WiFi允許您隨時隨地隨意上網,不再受網線距離的限制。那么我們如何在win7系統中設置無線路由器呢?具體步驟是什么?讓我們和超人編輯器一起設置無線路由器...

  • 動態緩沖,緩沖gif

    動態緩沖,緩沖gif 相關圖片動態緩沖系數緩沖區公式在制作特殊效果時非常有用,在著名的三星導航菜單中使用。現在很多網站都備受關注,其中緩沖導航是其中一大亮點。本文以一個德國網站的導航為例,詳細...

  • 幸運奪寶,奪寶幸運值

    幸運奪寶,奪寶幸運值 相關圖片王者奪寶幸運值滿幸運戰利品是一個非常有趣的軟件。在這個軟件中,用戶可以使用幸運豆來交換商品。你需要什么步驟來為幸運戰利品充電?下一步,超人軟件將為你帶來一個關于如...

  • win7 防火墻,win7防火墻怎么打開

    win7 防火墻,win7防火墻怎么打開 相關圖片win7防火墻打不開防火墻是眾多用戶安裝的必備軟件之一,而為了讓用戶下載,各大安全廠商也紛紛自制防火墻。相比之下,Windows 7系統的防火墻外觀簡單,但經過多年的發展電腦防火墻...

熱評文章

  • 規范編寫,標準編寫規范

    規范編寫,標準編寫規范 相關圖片產品規范編寫標準這是一個相對復雜的CSS理論,它分為五個部分:基礎、布局、模塊、狀態和主題。然而,它的核心思想仍然類似于OOCSS,鼓勵使用類1。基本屬性基本屬性容易理解,這...

  • 悅跑圈怎么記錄跑步軌跡,悅跑圈查看跑步軌跡

    悅跑圈怎么記錄跑步軌跡,悅跑圈查看跑步軌跡 相關圖片悅跑圈怎樣修改跑步記錄隨著時代的發展,人們越來越關注自己的健康。其中,有很多人喜歡用越跑圈來記錄運動。岳潤泉的跑道怎么走?接下來,超人軟件小編將為大家介紹iPhone版的...

  • 在dreamweavercs6中,dreamweavercs6安裝

    在dreamweavercs6中,dreamweavercs6安裝 相關圖片dreamweaverDreamweaver CS6設置背景音樂的方法步驟:1。指定方法1的代碼。代碼指定方法是指直接在頁面的HTML代碼中設置背景音樂。在現實中,通常使用標簽來實現cs6...

  • 已拍的激萌怎么去水印,怎么刪掉激萌內部照片

    已拍的激萌怎么去水印,怎么刪掉激萌內部照片 相關圖片faceapp有水印用face u軟件自拍很可愛,但不管是視頻還是照片,都會有face u的水?敲門?如何給aceu的照片加水印?今天,超人軟件為您帶來了一個關于faceu水印的圖激萌照片怎樣徹底刪除...

  • 書旗小說,書旗小說免費閱讀

    書旗小說,書旗小說免費閱讀 相關圖片最強老司機 小說書旗小說中有大量的作品,是許多書迷閱讀的天堂。如果你在電腦上下載了很多小說,但又不想通過數據線傳輸,可以使用安卓版的橫幅小說WiFi功能。書旗小說怎么樣女...

  • 獲取顏色,獲取圖片中的顏色

    獲取顏色,獲取圖片中的顏色 相關圖片android顏色本文主要介紹了Python通過PIL獲取圖片主要顏色的方法,并與顏色庫進行了比較。實例分析了Python通過PIL模塊進行圖片操作的技巧,具有一定的參考價值。需顏色抓取...

  • 拼多多省錢的優惠券在哪里領,拼多多平臺優惠在哪里領

    拼多多省錢的優惠券在哪里領,拼多多平臺優惠在哪里領 相關圖片淘寶怎么把人踢出去品多多是一款更實惠的移動部隊網上購物軟件。如果你覺得在多都商城團購不劃算,你還是可以通過各種方式獲得優惠券!如何獲得優惠券?如何獲得優惠券拼多多...

  • 鉛筆圖標,鉛筆小圖標

    鉛筆圖標,鉛筆小圖標 相關圖片ai里面出現鉛筆的圖標焰火制作超級漂亮的鉛筆效果:本教程最初是一個在線PS教程。我試著用FW來達到這個效果。操作步驟如下:圖標是一只鉛筆的軟件...

  • 怎么提取ppt的音樂,怎樣將ppt里面的音樂提取出來

    怎么提取ppt的音樂,怎樣將ppt里面的音樂提取出來 相關圖片ppt里音樂導出上一次,超人編輯教你如何在PPT中制作主版本。這一次,超人編輯帶給你的還是一門PPT相關課程,內容是如何從PPT中提取音樂。超人小編相信,當你在PPT上聽到上帝ppt音樂...

  • mobike lite,mobike怎么用

    mobike lite,mobike怎么用 相關圖片mobike音箱如何配對我想經常騎摩比自行車的人一定知道了。現在打開Moby bike的Android主界面,你會發現有兩個選擇。一個是我們常見的摩拜人,另一個是摩拜人。所以摩比摩比摩molite...

關注微信

变脸官网查询