亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 網站 > Nginx > 正文

nginx實現負載均衡和動靜分離

2024-08-30 12:29:30
字體:
來源:轉載
供稿:網友

nginx配置(windows配置),供大家參考,具體內容如下

以下是我的項目用到的一份配置文件

#user nobody;worker_processes 4; #進程數,一般cpu是幾核就寫多少#error_log logs/error.log;#error_log logs/error.log notice;#error_log logs/error.log info;#pid logs/nginx.pid;events { worker_connections 1024;#單個進程的最大連接數}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"'; #access_log logs/access.log main; sendfile on; #tcp_nopush on; #keepalive_timeout 0; keepalive_timeout 65; proxy_connect_timeout 15s;  proxy_send_timeout 15s;  proxy_read_timeout 15s; fastcgi_buffers 8 128k; gzip on; client_max_body_size 30m; gzip_min_length 1k; gzip_buffers 16 64k; gzip_http_version 1.1; gzip_comp_level 6; gzip_types text/plain application/x-javascript text/css application/xml application/javascript image/jpeg image/gif image/png image/webp; gzip_vary on; #第一個集群 upstream xdx.com{ server 119.10.52.28:8081 weight=100; server 119.10.52.28:8082 weight=100;  } #第二個集群,用于上傳圖片所用 upstream xdxfile.com{ server 119.10.52.28:8081;#關于文件上傳的請求均訪問這個集群 } #第三個集群 upstream xdx8082.com{ server 119.10.52.28:8082;#8082 } #第四個集群 upstream xdxali.com{ server 139.196.235.228:8082;#阿里云 } #第五個集群 upstream xdxaliws.com{ server 139.196.235.228:8886;#阿里云websocket }#第一個代理服務器,監聽的是80端口,監聽的域名是www.wonyen.com或者wonyen.com server { listen 80;#監聽的端口 server_name www.wonyen.com wonyen.com;#監聽的域名 #charset koi8-r; #access_log logs/host.access.log main; #location指的是訪問的路徑,下面這條配置表示當訪問網站的根目錄,即訪問wonyen.com或者www.wonyen.com的時候,就去根目錄為html的下面去尋找index.html或者index.htm。在index.html這個頁面里面你可以做一些重定向的工作,跳轉到指定頁面 #也可以自定義到某個集群 # location / {  # root html;  # index index.html index.htm; #} #所有靜態請求都交由nginx處理,存放目錄為webapps下的root,過期時間為30天  location ~ /.(css|js|gif|jpg|jpeg|png|bmp|swf|eot|svg|ttf|woff|mp3|mp4|wav|wmv|flv|f4v|json)$ {   root apache-tomcat-8.0.9-windows-x86-yipin-8081/apache-tomcat-8.0.9/webapps/ROOT;   expires 30d;  } #配置以Att結尾的請求的處理集群為http://xdxfile.com location ~ ^//w+Att{  proxy_pass http://xdxfile.com; } #配置以Fill結尾的請求的處理集群為http://xdxfile.com location ~ ^//w+Fill{  proxy_pass http://xdxfile.com; } #精準配置,如果請求名為/crowdFundSave,則 location = /crowdFundSave{  proxy_pass http://xdxfile.com; } #精確配置,同上 location = /crowdFundRewardSave{  proxy_pass http://xdxfile.com; } #精確配置,同上 location = /garbageCategorySave{  proxy_pass http://xdxfile.com; } #精確配置,同上 location = /mailTestAjax{  proxy_pass http://xdx8082.com; } #精確配置,同上 location = /mailSendAjax{  proxy_pass http://xdx8082.com; } #精確配置,同上 location = /mailOldAjax{  proxy_pass http://xdx8082.com; } #精確配置,同上 #location = /wechatAuthority{  #proxy_pass http://xdxali.com; #} location ~ ^/ueditor1_4_3{  proxy_pass http://xdxfile.com; } #其他所有請求都訪問 http://xdx.com的集群   location ~ .*$ {  index index;  proxy_pass http://xdx.com;  } #404頁面訪問/Error404.jsp這個location error_page 404  /Error404.jsp; #500等頁面也訪問 /Error404.jsp這個location error_page 500 502 503 504 /Error404.jsp; #配置請求/Error404.jsp就訪問http://xdxfile.com集群 location = /Error404.jsp {  proxy_pass http://xdxfile.com; } # 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 #另外一個代理服務器,監聽8886接口,監聽的域名為www.wonyen.com或者wonyen.com server { listen 8886; server_name www.wonyen.com wonyen.com;#配置若請求為wonyen.com:8086(根目錄),就讓他去訪問http://xdxaliws.com這個集群,這邊配置的是websocket的服務端 location / {  proxy_pass http://xdxaliws.com;  proxy_http_version 1.1;  proxy_set_header Upgrade $http_upgrade;  proxy_set_header Connection "upgrade"; } } # 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; # } #}}

以上就是我的一個配置?;旧闲枰⒁獾亩荚谂渲梦募凶⒔?。我把幾個重要的地方單獨拿出來講一下。

1.集群的配置,我在上面的配置里有定義多個集群,集群按字面的意思理解就是由多臺服務器構成的一個集合,典型的例子如 

upstream xdx.com{ server 119.10.52.28:8081 weight=100; server 119.10.52.28:8082 weight=100;  }

這樣的一個配置,這個集群包含了兩個分支,我們可以在兩臺服務器上搭建相同的項目(上述的例子是在同樣的服務器,不同的端口部署相同的項目,因為筆者的服務器有限),當有請求是需要這個集群來處理的時候,nginx會隨機分配,當然也可以配置權重來設置兩個server的訪問概率。這就是負載均衡的原理。我們在多臺服務器上部署相同的項目,利用nginx對請求進行轉發,這樣可以降低只有一臺服務器所造成的的負載過大,而且當其中一臺服務器掛掉以后,nginx會分配另外一臺服務器來工作,這樣就不會造成服務停止了。

2.server配置項代表的是一個代理服務器,上面的文件中我們配置了兩個文件,分別監聽wonyen.com(www.wonyen.com)這兩個域名的80和8886端口,所有訪問wonyen.com:80(即wonyen.com)這個域名下的請求,都按照第一個server所定義的規則去轉發,而所有訪問wonyen.com:8886下的請求,則會按照第二個server所定義的規則去轉發。

3.我們甚至可以通過配置來處理多個域名,看以下的例子。下面的例子我配置了兩個域名的規則,一個是iis服務器,一個是tomcat服務器,主要目的是為了解決80端口只能被一個程序使用的問題。如果iis用了80,tomcat就用不了,反之亦然。所以我給iis和tomcat都分配除了80以外的端口,而把80端口留給niginx。由nginx來分配請求給不同的網站。

復制代碼

#user nobody;worker_processes 1;#error_log logs/error.log;#error_log logs/error.log notice;#error_log logs/error.log info;#pid logs/nginx.pid;events { worker_connections 1024;}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"'; #access_log logs/access.log main; sendfile on; #tcp_nopush on; #keepalive_timeout 0; keepalive_timeout 65; gzip on; client_max_body_size 30m; gzip_min_length 1k; gzip_buffers 16 64k; gzip_http_version 1.1; gzip_comp_level 6; gzip_types text/plain application/x-javascript text/css application/xml application/javascript image/jpeg image/gif image/png image/webp; gzip_vary on; upstream achina.com{ server 120.76.129.218:81;  } upstream qgrani.com{ server 120.76.129.218:8080;  } server { listen 80; server_name www.achinastone.com achinastone.com; #charset koi8-r; #access_log logs/host.access.log main; location / {  root html;  index index.html index.htm; }  #其他請求   location ~ .*$ {  index index;  proxy_pass http://achina.com;  } #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 80; server_name www.qgranite.com qgranite.com; location / {  root html;  index index.html index.htm; }  #所有靜態請求都交由nginx處理,存放目錄為webapp  location ~ /.(css|js|gif|jpg|jpeg|png|bmp|swf|eot|svg|ttf|woff|mp3|mp4|wav|wmv|flv|f4v)$ {   root apache-tomcat-8.0.9/webapps/ROOT;   expires 30d;  }  #其他請求   location ~ .*$ {  index index;  proxy_pass http://qgrani.com;  } } # 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; # } #}}

4.還有一個就是動靜分離,說得通俗一點就是,把請求數據(動)與請求圖片(靜)分開,在tomcat里,當我們沒有做動靜分離的時候,tomcat把對圖片的請求也會當成一個動態的請求,而處理動態請求是比較費性能的(至于為什么,我也不太清楚)。所以我們可以使用nginx配置來實現動靜分離。

我的做法是把其中一個tomcat項目放在nginx的根目錄下,這樣,我們就可以通過以下方式來配置,實現當我們訪問圖片,js,css等靜態資源的時候,都到一個指定的目錄去訪問。這樣做的好處除了節省性能,還有一個就是我們不需要在所有的負載均衡服務器中都同步保留這些靜態資源,只需要在一個地方保留就好了。配置如下

#所有靜態請求都交由nginx處理,存放目錄為webapps下的root,過期時間為30天  location ~ /.(css|js|gif|jpg|jpeg|png|bmp|swf|eot|svg|ttf|woff|mp3|mp4|wav|wmv|flv|f4v|json)$ {   root apache-tomcat-8.0.9-windows-x86-yipin-8081/apache-tomcat-8.0.9/webapps/ROOT;   expires 30d;  }

5.既然讀取靜態資源是從這個目錄讀取的,那么我們必須考慮如何存儲靜態資源,特別是當我們做了負載均衡以后,在我們的 項目中上傳圖片的請求有可能在任意一個集群的分支中被調用,比如我們的集群中有A,B兩臺服務器,他們都有可能做上傳圖片這件事情,如果A調用了上傳圖片這個請求,則圖片則被上傳到了A這臺服務器上,反之就是B上面。這樣勢必導致A,B兩臺服務器上的靜態圖片是不同步的,當我們要訪問這些圖片的時候,(假設此時我們還沒做動靜分離)就有可能出現訪問不到的情況。由于上一步我們做了動靜分離,現在的問題就演變為,如何把這些A,B服務器上傳的圖片,都同步到我們做動靜分離的那個文件夾下。人工或者程序去同步都很麻煩,我的做法是指定一臺服務器(也就是nginx安裝的那臺服務器)的tomcat項目(也就是部署在nginx根目錄下的那個tomcat項目),讓它專門來負責上傳圖片的工作,這樣所有的圖片都由這個tomcat項目來上傳,也就保證了靜態庫中的圖片就是完整的圖片。為此我配置了一個集群,如下。

#第二個集群,用于上傳圖片所用 upstream xdxfile.com{ server 119.10.52.28:8081;#關于文件上傳的請求均訪問這個集群 }然后在location中我這樣配置: #配置以Att結尾的請求的處理集群為http://xdxfile.com location ~ ^//w+Att{  proxy_pass http://xdxfile.com; } #配置以Fill結尾的請求的處理集群為http://xdxfile.com location ~ ^//w+Fill{  proxy_pass http://xdxfile.com; }

因為我把所有涉及到附件上傳的請求都加上了Att或者Fill的后綴,當nginx捕獲這些后綴名的請求的時候,就會把他們都交給 http://xdxfile.com這個集群,也就是119.10.52.28:8081這個項目。

6.做了負載均衡以后,有一個不得不面臨的問題就是內存數據的同步,我們在程序中有時候會把一些數據存放在內存中,典型的一類數據就是session。如何讓session數據在集群的各個分支中共享session呢,這邊要用到一個新的東西,叫做redis。我會在下一篇文章中詳細地介紹。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VEVB武林網。


注:相關教程知識閱讀請移步到服務器教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
伊人av综合网| 亚洲日本中文字幕免费在线不卡| 亚洲人成电影网站色www| 国产剧情久久久久久| 国产精品一区二区三区久久久| 久久久精品电影| 国产午夜精品一区理论片飘花| 国产99久久精品一区二区 夜夜躁日日躁| 91中文精品字幕在线视频| 2019中文在线观看| 亚洲va欧美va国产综合剧情| 亚洲理论在线a中文字幕| 欧美精品电影免费在线观看| 亚洲va男人天堂| 久久天天躁夜夜躁狠狠躁2022| 91亚洲国产成人精品性色| 深夜精品寂寞黄网站在线观看| www.欧美免费| 亚洲免费电影在线观看| 日韩一级裸体免费视频| 69av在线播放| 久久久欧美一区二区| www.日韩.com| www.日韩不卡电影av| 欧美极品xxxx| 韩国精品久久久999| 日韩av最新在线观看| 亚洲精品456在线播放狼人| www.99久久热国产日韩欧美.com| 91免费电影网站| 国产精品男人的天堂| 久久久久久国产| 亚洲精品福利资源站| 亚洲v日韩v综合v精品v| 国产精品久久久久久亚洲调教| 欧美日韩国产激情| 色综合导航网站| 欧美另类精品xxxx孕妇| 成人午夜两性视频| 亚洲欧美一区二区三区在线| 国产成人在线一区二区| 日韩女优人人人人射在线视频| 国产精品网站视频| 欧洲成人午夜免费大片| 亚洲理论电影网| 色综合久综合久久综合久鬼88| 色琪琪综合男人的天堂aⅴ视频| 深夜精品寂寞黄网站在线观看| 国产一区二区三区免费视频| 久久91亚洲精品中文字幕| 亚洲天堂2020| 98精品在线视频| 这里只有视频精品| 亚洲性av网站| 亚洲奶大毛多的老太婆| 欧美日韩中国免费专区在线看| 亚洲精品久久久久中文字幕欢迎你| 日韩av综合网站| 亚洲国产一区二区三区在线观看| 国产精品96久久久久久| 亚洲va欧美va国产综合剧情| 亚洲欧美精品伊人久久| 亚洲国产福利在线| 国产成人精品国内自产拍免费看| 欧美精品一区二区免费| 久久噜噜噜精品国产亚洲综合| 97精品一区二区三区| 日韩成人中文字幕在线观看| 色先锋久久影院av| 日韩在线小视频| 欧美日韩裸体免费视频| 欧美激情女人20p| 一区三区二区视频| 91久久精品国产91久久| 欧美最猛黑人xxxx黑人猛叫黄| 国产精品自产拍在线观| 国产精品极品尤物在线观看| 亚洲成人在线视频播放| 久久视频在线观看免费| 这里精品视频免费| 91国语精品自产拍在线观看性色| 欧美理论电影在线播放| 欧美专区在线播放| 国产精品久久久久久久久久久久久久| 国产成+人+综合+亚洲欧美丁香花| 日本精品久久电影| 亚洲一区美女视频在线观看免费| 国产精品草莓在线免费观看| 午夜精品久久久久久久99热| 在线观看日韩欧美| 国产主播精品在线| 久久成人综合视频| 国产91色在线| 亚洲精品视频久久| 中文字幕一区二区三区电影| 欧美日韩另类字幕中文| 日本韩国在线不卡| 色噜噜久久综合伊人一本| 欧美激情极品视频| 5566成人精品视频免费| 亚洲第一在线视频| 精品日韩美女的视频高清| 欧美精品xxx| 成人国产精品久久久久久亚洲| 成人免费xxxxx在线观看| 日韩激情视频在线| 欧美成人精品一区二区三区| 亚洲精品欧美日韩专区| 日韩激情av在线播放| 久久这里只有精品视频首页| 中文字幕亚洲欧美一区二区三区| 久久精品视频网站| 日韩av电影国产| www.日韩免费| 96pao国产成视频永久免费| www.日韩系列| 日韩中文字幕在线视频播放| 亚洲精品电影在线| 日韩精品亚洲元码| 亚洲福利影片在线| 成人精品aaaa网站| 久久精品国产99国产精品澳门| 日韩精品在线免费| 亚洲xxx自由成熟| 欧美午夜丰满在线18影院| 欧美日韩精品在线视频| 国产精品视频999| 精品一区二区亚洲| 国产aⅴ夜夜欢一区二区三区| 国产91色在线|免| 日韩av在线免费| 91精品国产高清久久久久久| 欧美精品免费看| 成人网在线视频| 国产精品入口免费视| 中文字幕精品国产| 国产+人+亚洲| 国产欧美日韩高清| 国产一区二区三区网站| 国产91精品久久久久久| 久久夜精品va视频免费观看| 久久精品视频va| 国产精品视频区| 91精品久久久久久久久久入口| 91福利视频在线观看| 久久久久久久久亚洲| 久久久精品国产一区二区| 91精品国产高清自在线看超| 日韩视频免费中文字幕| 日韩在线视频网站| 国模精品视频一区二区| 久久精品电影网站| 97视频网站入口| 久久免费国产视频| 性欧美视频videos6一9| 中文字幕日韩av综合精品| 97在线看免费观看视频在线观看| 欧美黑人极品猛少妇色xxxxx| 国产精品第2页| 亚洲人成在线免费观看| 国产精品日韩欧美大师| 亚洲直播在线一区| 欧美日韩在线免费| 国产精品视频大全|