從入門到精通-Nginx,圖文並茂、負載均衡、動靜分離、虛擬主機 附案例源碼

導讀

  篇幅較長,乾貨滿滿,需花費較長時間,轉載請註明出處!
php

Nginx概述

簡介

  Nginx (engine x) 是一個高性能HTTP反向代理web服務器,同時也提供了IMAP/POP3/SMTP服務。Nginx是由伊戈爾·賽索耶夫爲俄羅斯訪問量第二的Rambler.ru站點(俄文:Рамблер)開發的,第一個公開版本0.1.0發佈於2004年10月4日。css

  Nginx是一款輕量級的Web 服務器/反向代理服務器及電子郵件(IMAP/POP3)代理服務器,在BSD-like 協議下發行。其特色是佔有內存少併發能力,事實上nginx的併發能力在同類型的網頁服務器中表現較好,中國大陸使用nginx網站用戶有:百度、京東、新浪、網易、騰訊、淘寶等。html

代理服務器

  代理服務器根據代理對象不一樣,能夠分爲正向代理服務器與反向代理服務器。這裏的「正」與「反」均是站在客戶端角度來講的。linux

正向代理

  正向代理是對客戶端代理客戶端C服務端S獲取資源,但於某些緣由不能直接訪問服務端,而是經過另外一臺主機P向服務端發送請求。當服務端處理完畢請求將響應發主機P,主機P接收到來自服務端的響應後將響應又轉給客戶端C。此時的主機P,就稱爲客戶端C正向代理服務器nginx

  客戶端在使用正向代理服務器時是知道其要訪問的目標服務器的地址等信息的。c++

  正向代理服務器是服務器的用戶(客戶端)架設的主機,與服務器無關,正向代理服務器的出現,使服務端根本就不知道真正客戶端的存在。程序員

反向代理

  反向代理,其實客戶端對代理是無感知的,由於客戶端不須要任何配置就能夠訪問,咱們須要將請求送到反向代理服務器由反向代理服務器選擇目標服務器獲取數據後,在將響應返回給客戶端,此時反向代理服務器和目標服務器對外就是一個服務器,暴露的是代理服務器地址,隱藏了真實服務器IP地址web

二者區別

  在知乎上找了2張圖,能夠幫助咱們更好的理解。正則表達式

 

Nginx的特色

  • 高併發
  • 低消耗
  • 熱部署
  • 高擴展
  • 高可用

Nginx的web請求處理機制

  Nginx結合多進程機制和異步機制對外提供服務異步機制使用的是異步非阻塞方式。Nginx的master進程會生成多個worker進程,master進程負責管理這些worker進程生命週期接受外部命令解析perl腳本等。而worker進程則用於接受和處理客戶端請求算法

  每一個worker進程可以使用異步非阻塞方式處理多個客戶端請求。當某個worker進程接收到客戶端的請求後,會調用IO進程處理,若是不能當即獲得結果,worker進程就去處理其餘的請求。當IO返回結果後,就會通知worker進程,而worker進程獲得通知後,就會掛起當前正在處理的事務,拿IO返回結果去響應客戶端請求,worker進程採用的是epoll事件驅動模型IO進行通訊的。epoll模型底層採用的是「回調callback」代替裏輪詢,使效率高於select模型。

Nginx的下載與安裝

Nginx的下載

nginx的官網:http://nginx.org/

  注:主線版,是最新的版本;穩定版,推薦生產環境下使用;舊版,之前的版本。

百度雲盤地址

連接:https://pan.baidu.com/s/1kjQST_x1Sf_thg3XDmqx6w  密碼:18sc

將nginx上傳至linux

環境搭建

前期準備

  由於nginx是C語言寫的,並且是源碼安裝,安裝前需安裝C語言環境!!!

yum install -y gcc-c++ gcc

安裝依賴庫

  基本的Nginx功能依賴於一些基本的庫,在安裝Nginx以前須要提早安裝這些庫。

  pcre-devel:pcre,Perl Compatible Regular Expressions,Perl腳本語言兼容正則表達式,爲Nginx提供正則表達式庫。

  openssl-devel:爲Nginx提供SSL(安全套接字層)密碼庫,包含主要的密碼算法,經常使用的密鑰和證書封裝管理功能及SSL協議,並提供豐富的應用程序供測試或其餘目的使用。

  在安裝以前須要注意,不少庫具備devel庫與非devel庫兩種。devel庫表示development開發庫,比非devel庫會多出一些頭文件、靜態庫、源碼包等。而這些包在運行時不可能用到,但在開發時有可能用到。因此對於程序員來講,通常都是須要安裝devel庫的。不過在yum安裝devel庫時,因爲其依賴於非devel庫,因此其會先自動安裝非devel庫,然後再安裝devel庫。因此真正安裝時,只需顯示的安裝devel庫便可。

 yum -y install pcre-devel openssl-devel

解壓Nginx包

tar -zxvf nginx-1.16.1.tar.gz -C /opt/apps

進入剛纔解壓後的目錄

查看幫助(可忽略)

./configure --help

安裝模塊

此時Nginx解壓路徑下會多出一個:Makefile

系統配置信息

  • path prefix:Nginx安裝目錄
  • binary file:Nginx命令文件
  • modules path:Nginx模塊存放路徑
  • configuration prefix:Nginx配置文件存放路徑
  • configuration file:Nginx配置文件名
  • pid file:Nginx的進程id文件
  • error log file:錯誤日誌文件
  • http access log file:http訪問日誌文件
  • http xxx:其餘http請求相關的文件

  配置成功後,再次查看Nginx解壓目錄,發現其中多出一個文件Makefile。後面的編譯就是依靠該文件進行的。

編譯安裝

  這是兩個命令,make:爲編譯命令;make install:爲安裝命令,能夠分別執行。這裏使用&&將兩個命令鏈接執行,會在前面命令執行成功的前提下才會執行第二個命令。

編譯安裝完成後,會在/usr/local下出現nginx目錄

進入安裝目錄

設置任務目錄可使用sbin(可忽略)

ln -n /usr/local/nginx/sbin/nginx /usr/local/sbin

格式:
ln -n 源路徑 目標路徑

注:軟連接創建完成後就能夠在任意路徑下使用nginx命令

Nginx命令

  • 查看命令選項:nginx -h
  • 啓動命令:nginx -c file
  • 中止命令:nginx -s stop/quit
  • 平滑重啓命令:nginx -s reload
  • 測試配置文件命令:nginx -tq

nginx -t:測試配置文件是否正確,默認只測試默認的配置文件conf/nginx.conf

nginx -T:測試配置文件是否正確,並顯示配置文件內容

nginx -tq:在配置文件測試過程當中,禁止顯示非錯誤信息,即只顯示錯誤信息

啓動nginx

  啓動後,並查看,發現有2個線程,一個master,一個worker

查看nginx端口號

nginx頁面訪問測試

注:linux需關閉防火牆!!!!

Nginx性能調優

查看nginx配置文件

nginx進程

  worker_processes,工做進程,用於指定Nginx的工做進程數量。該值應該設置爲多少合適呢?其數值通常設置爲cpu內核數量,或內核數量的整數倍。注意,現代的cpu通常都是多核,即一塊cpu中包含多個內核。

  若當前系統具備2塊cpu,而每塊cpu中包含2個內核,那麼worker_processes的值通常能夠設置爲4或8個。固然也能夠爲2個。

  不過須要注意,該值不只僅取決於cpu內核數量,還與硬盤數量及負載均衡模式相關,在不肯定時還能夠指定其值爲auto

worker_cpu_affinity的設置

  爲了進一步提升系統性能,咱們會將worker進程與具體的內核進行綁定。該綁定操做是經過worker_cpu_affinity屬性進行設置的。affinity,密切關係。

  不過,若指定worker_processes的值爲auto,則沒法設置worker_cpu_affinity。該設置是經過二進制進行的。每一個內核使用一個二進制表示,0表明內核關閉;1表明內核開啓。也就是說,有幾個內核,就須要使用幾個二進制位。

  下面經過幾個例子來增進對worker_processes與worker_cpu_affinity的理解  

Nginx核心功能

請求定位

探究歡迎頁面顯示緣由

訪問資源

查看nginx.conf配置

使用perl語言自定義一個網站

檢測語法格式是否正確

重啓nginx

訪問成功

  注:字打錯了,應該是「歡迎來到陳彥斌的Nginx!!」

靜態代理

  Nginx靜態代理,將全部的靜態資源,如:css、js、html、jpg等資源放到Nginx服務器,而不存在應用服務器Tomcat中,當客戶端發出的請求是對這些靜態資源的請求時,Nginx直接將這些靜態資源響應給客戶端,而無需提交給應用服務器處理。這樣就下降了應用服務器的壓力

  同時,Nginx對於靜態資源的處理較Tomcat,性能更高效率更高。因此,在實際生產環境下,會使用Nginx做爲靜態代理服務器,專門處理靜態資源的響應。

  Nginx對於靜態資源請求的攔截方式,能夠經過靜態資源名稱的擴展名攔截,也能夠經過靜態資源所在的目錄名稱攔截

建立目錄存放文件

往images目錄下存放一些圖片

編輯nginx.conf配置文件

擴展名攔截

擴展名攔截測試

目錄名攔截

負載均衡

   負載均衡,Load Balancing,就是將對請求的處理分攤多個操做單元上進行。這個均衡是指在大批量訪問前提下的一種基本均衡,並不是是絕對的平均。

  對於Web工程中的負載均衡,就是將相同的Web應用部署多個不一樣的Web服務器上,造成多個Web應用服務器。當請求到來時,由負載均衡服務器負責請求事先設定好的比例向Web應用服務器進行分發,從而增加系統的總體吞吐量

整體規劃

  該機羣包含一臺Nginx服務器,兩臺Tomat服務器。

  首先開發一個web工程,將其打包。而後,在克隆出兩臺Tomcat主機,前面的web工程分別部署到這兩臺Tomcat主機上。而後,在Nginx服務器上設置對這兩臺Tomcat主機的均在均衡。 

配置說明

  1. tomcat服務器1:ip地址192.168.31.213
  2. tomcat服務器2:ip地址192.168.31.214
  3. nginx服務器:ip地址192.168.31.201

建立一個Web工程

項目結構圖

配置一臺Tomcat主機

具體配置,請參考另外一篇博客:點我直達

複製並配置另外一臺Tomcat主機

   克隆上面配置好的Tomcat主機

配置Nginx主機

配置nginx.conf

  注:weight權重

平滑重啓nginx

項目的啓動與訪問

項目下載源碼

jsp項目
百度雲盤
連接:https://pan.baidu.com/s/18z5c93jM6S-qvoT2cUZi7g  密碼:u08i

動靜分離

簡介

  動靜分離,就是JSP、Servlet等態資源交由Tomcat其餘Web服務器處理CSS、js、image等靜態資源交由Nginx或其餘Http服務器處理,充分發揮各自的優點減輕其餘服務器壓力,搭建更爲高效的系統架構。

Nginx動靜分析的實現

  下面要搭建Nginx,環境中有三臺Nginx主機一臺用於完成負載均衡兩臺Nginx用於存放前面項目中的靜態資源。另外,還包含前面的兩臺Tomcat主機

複製並配置一臺Nginx服務器

  將原來安裝有Nginx的主機做爲母機,克隆一臺Nginx主機,用於存放靜態資源:css、js、image。

修改nginx.conf

存放靜態資源

複製並配置一臺Nginx服務器

  重複上面,複製的那臺Nginx操做!!!

修改原始那臺nginx配置文件(負載均衡,重要!!!)

  設置靜態資源負載均衡代理,兩臺nginx的ip分別爲:192.168.31.2十二、192.168.31.213

 

web工程

 

測試

因爲圖片太大,截成2段了

linux搭建相關配置

服務器配置信息

  1 #user  nobody;
  2 worker_processes  1;
  3 
  4 #error_log  logs/error.log;
  5 #error_log  logs/error.log  notice;
  6 #error_log  logs/error.log  info;
  7 
  8 #pid        logs/nginx.pid;
  9 
 10 
 11 events {
 12     worker_connections  1024;
 13 }
 14 
 15 
 16 http {
 17     include       mime.types;
 18     default_type  application/octet-stream;
 19 
 20     #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
 21     #                  '$status $body_bytes_sent "$http_referer" '
 22     #                  '"$http_user_agent" "$http_x_forwarded_for"';
 23 
 24     #access_log  logs/access.log  main;
 25 
 26     sendfile        on;
 27     #tcp_nopush     on;
 28 
 29     #keepalive_timeout  0;
 30     keepalive_timeout  65;
 31 
 32     #gzip  on;
 33     # 配置上傳流,用於負載均衡
 34     upstream tomcat.cyb.com{
 35     server 192.168.31.214:8080 weight=1;
 36         server 192.168.31.215:8080 weight=1;
 37     }
 38     upstream static.cyb.com{
 39     server 192.168.31.212:80 weight=1;
 40         server 192.168.31.213:80 weight=1;
 41     }
 42     server {
 43         listen       80;
 44         server_name  localhost;
 45 
 46         #charset koi8-r;
 47 
 48         #access_log  logs/host.access.log  main;
 49 
 50         location / {
 51            # root   html;
 52            # index  index.html index.htm;
 53             proxy_pass http://tomcat.cyb.com;
 54         }
 55         location ~.*\.(jpg|jpeg|js|css|html)$ {
 56             proxy_pass http://static.cyb.com; 
 57        }
 58         #error_page  404              /404.html;
 59 
 60         # redirect server error pages to the static page /50x.html
 61         #
 62         error_page   500 502 503 504  /50x.html;
 63         location = /50x.html {
 64             root   html;
 65         }
 66 
 67         # proxy the PHP scripts to Apache listening on 127.0.0.1:80
 68         #
 69         #location ~ \.php$ {
 70         #    proxy_pass   http://127.0.0.1;
 71         #}
 72 
 73         # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
 74         #
 75         #location ~ \.php$ {
 76         #    root           html;
 77         #    fastcgi_pass   127.0.0.1:9000;
 78         #    fastcgi_index  index.php;
 79         #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
 80         #    include        fastcgi_params;
 81         #}
 82 
 83         # deny access to .htaccess files, if Apache's document root
 84         # concurs with nginx's one
 85         #
 86         #location ~ /\.ht {
 87         #    deny  all;
 88         #}
 89     }
 90 
 91 
 92     # another virtual host using mix of IP-, name-, and port-based configuration
 93     #
 94     #server {
 95     #    listen       8000;
 96     #    listen       somename:8080;
 97     #    server_name  somename  alias  another.alias;
 98 
 99     #    location / {
100     #        root   html;
101     #        index  index.html index.htm;
102     #    }
103     #}
104 
105 
106     # HTTPS server
107     #
108     #server {
109     #    listen       443 ssl;
110     #    server_name  localhost;
111 
112     #    ssl_certificate      cert.pem;
113     #    ssl_certificate_key  cert.key;
114 
115     #    ssl_session_cache    shared:SSL:1m;
116     #    ssl_session_timeout  5m;
117 
118     #    ssl_ciphers  HIGH:!aNULL:!MD5;
119     #    ssl_prefer_server_ciphers  on;
120 
121     #    location / {
122     #        root   html;
123     #        index  index.html index.htm;
124     #    }
125     #}
126 
127 }
nginx-1
  1 #user  nobody;
  2 worker_processes  1;
  3 
  4 #error_log  logs/error.log;
  5 #error_log  logs/error.log  notice;
  6 #error_log  logs/error.log  info;
  7 
  8 #pid        logs/nginx.pid;
  9 
 10 
 11 events {
 12     worker_connections  1024;
 13 }
 14 
 15 
 16 http {
 17     include       mime.types;
 18     default_type  application/octet-stream;
 19 
 20     #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
 21     #                  '$status $body_bytes_sent "$http_referer" '
 22     #                  '"$http_user_agent" "$http_x_forwarded_for"';
 23 
 24     #access_log  logs/access.log  main;
 25 
 26     sendfile        on;
 27     #tcp_nopush     on;
 28 
 29     #keepalive_timeout  0;
 30     keepalive_timeout  65;
 31 
 32     #gzip  on;
 33 
 34     server {
 35         listen       80;
 36         server_name  localhost;
 37 
 38         #charset koi8-r;
 39 
 40         #access_log  logs/host.access.log  main;
 41 
 42        # location / {
 43        #     root   html;
 44        #     index  index.html index.htm;
 45        # }
 46         # 經過擴展名方式攔截
 47     location ~.*\.(jpg|jpeg|js|css|html)$ {
 48         root /opt;
 49     }
 50 
 51         #error_page  404              /404.html;
 52 
 53         # redirect server error pages to the static page /50x.html
 54         #
 55         error_page   500 502 503 504  /50x.html;
 56         location = /50x.html {
 57             root   html;
 58         }
 59 
 60         # proxy the PHP scripts to Apache listening on 127.0.0.1:80
 61         #
 62         #location ~ \.php$ {
 63         #    proxy_pass   http://127.0.0.1;
 64         #}
 65 
 66         # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
 67         #
 68         #location ~ \.php$ {
 69         #    root           html;
 70         #    fastcgi_pass   127.0.0.1:9000;
 71         #    fastcgi_index  index.php;
 72         #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
 73         #    include        fastcgi_params;
 74         #}
 75 
 76         # deny access to .htaccess files, if Apache's document root
 77         # concurs with nginx's one
 78         #
 79         #location ~ /\.ht {
 80         #    deny  all;
 81         #}
 82     }
 83 
 84 
 85     # another virtual host using mix of IP-, name-, and port-based configuration
 86     #
 87     #server {
 88     #    listen       8000;
 89     #    listen       somename:8080;
 90     #    server_name  somename  alias  another.alias;
 91 
 92     #    location / {
 93     #        root   html;
 94     #        index  index.html index.htm;
 95     #    }
 96     #}
 97 
 98 
 99     # HTTPS server
100     #
101     #server {
102     #    listen       443 ssl;
103     #    server_name  localhost;
104 
105     #    ssl_certificate      cert.pem;
106     #    ssl_certificate_key  cert.key;
107 
108     #    ssl_session_cache    shared:SSL:1m;
109     #    ssl_session_timeout  5m;
110 
111     #    ssl_ciphers  HIGH:!aNULL:!MD5;
112     #    ssl_prefer_server_ciphers  on;
113 
114     #    location / {
115     #        root   html;
116     #        index  index.html index.htm;
117     #    }
118     #}
119 
120 }
nginx-2
  1 #user  nobody;
  2 worker_processes  1;
  3 
  4 #error_log  logs/error.log;
  5 #error_log  logs/error.log  notice;
  6 #error_log  logs/error.log  info;
  7 
  8 #pid        logs/nginx.pid;
  9 
 10 
 11 events {
 12     worker_connections  1024;
 13 }
 14 
 15 
 16 http {
 17     include       mime.types;
 18     default_type  application/octet-stream;
 19 
 20     #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
 21     #                  '$status $body_bytes_sent "$http_referer" '
 22     #                  '"$http_user_agent" "$http_x_forwarded_for"';
 23 
 24     #access_log  logs/access.log  main;
 25 
 26     sendfile        on;
 27     #tcp_nopush     on;
 28 
 29     #keepalive_timeout  0;
 30     keepalive_timeout  65;
 31 
 32     #gzip  on;
 33 
 34     server {
 35         listen       80;
 36         server_name  localhost;
 37 
 38         #charset koi8-r;
 39 
 40         #access_log  logs/host.access.log  main;
 41 
 42        # location / {
 43        #     root   html;
 44        #     index  index.html index.htm;
 45        # }
 46         # 經過擴展名方式攔截
 47     location ~.*\.(jpg|jpeg|js|css|html)$ {
 48         root /opt;
 49     }
 50 
 51         #error_page  404              /404.html;
 52 
 53         # redirect server error pages to the static page /50x.html
 54         #
 55         error_page   500 502 503 504  /50x.html;
 56         location = /50x.html {
 57             root   html;
 58         }
 59 
 60         # proxy the PHP scripts to Apache listening on 127.0.0.1:80
 61         #
 62         #location ~ \.php$ {
 63         #    proxy_pass   http://127.0.0.1;
 64         #}
 65 
 66         # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
 67         #
 68         #location ~ \.php$ {
 69         #    root           html;
 70         #    fastcgi_pass   127.0.0.1:9000;
 71         #    fastcgi_index  index.php;
 72         #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
 73         #    include        fastcgi_params;
 74         #}
 75 
 76         # deny access to .htaccess files, if Apache's document root
 77         # concurs with nginx's one
 78         #
 79         #location ~ /\.ht {
 80         #    deny  all;
 81         #}
 82     }
 83 
 84 
 85     # another virtual host using mix of IP-, name-, and port-based configuration
 86     #
 87     #server {
 88     #    listen       8000;
 89     #    listen       somename:8080;
 90     #    server_name  somename  alias  another.alias;
 91 
 92     #    location / {
 93     #        root   html;
 94     #        index  index.html index.htm;
 95     #    }
 96     #}
 97 
 98 
 99     # HTTPS server
100     #
101     #server {
102     #    listen       443 ssl;
103     #    server_name  localhost;
104 
105     #    ssl_certificate      cert.pem;
106     #    ssl_certificate_key  cert.key;
107 
108     #    ssl_session_cache    shared:SSL:1m;
109     #    ssl_session_timeout  5m;
110 
111     #    ssl_ciphers  HIGH:!aNULL:!MD5;
112     #    ssl_prefer_server_ciphers  on;
113 
114     #    location / {
115     #        root   html;
116     #        index  index.html index.htm;
117     #    }
118     #}
119 
120 }
nginx-3

虛擬主機

簡介

  虛擬主機,就是將一臺物理服務器虛擬爲多個服務器來使用,從而實現一臺服務器上配置多個站點,便可以在一臺物理主機上配置多個域名。Nginx中,一個server標籤是一臺虛擬主機,配置多個server標籤就虛擬出了多臺主機。

  Nginx虛擬主機實現方式有兩種域名虛擬方式端口虛擬方式。域名虛擬方式是指不一樣的虛擬機使用不一樣的域名,經過不一樣的域名虛擬出不一樣的主機;端口虛擬方式是指不一樣的虛擬機使用相同的域名不一樣的端口號,經過不一樣的端口號虛擬出不一樣的主機。基於端口的虛擬方式不經常使用。。。

規劃

  如今不少生活服務類網絡平臺都具備這樣的功能:不一樣城市的用戶能夠打開不一樣城市專屬的站點。用戶首先打開的是平臺總的站點,而後容許用戶切換到不一樣的城市。其實,不一樣的城市都是一個不一樣的站點。

  這裏咱們要實現的功能是爲平臺總站點、北京、上海兩個城市站點分別建立一個虛擬主機。每一個虛擬主機都具備兩臺Tomcat的負載均衡主機。因爲有三個站點,因此共需六臺Tomcat主機。

  首先要建立一個web工程,其中就一個index.jsp頁面,頁面除了顯示當前城市外,還要顯示城市切換的超連接。爲了可以明細的區分出當前訪問的Tomcat,在頁面中顯示出客戶端ip和服務器ip。

規劃圖

注:字打錯了,北京應該是:bj.cyb.com

建立web工程

  直接複製前面的web工程,只須要一個jsp便可。

war包

總站

北京

上海 

 

項目源碼下載 

百度雲盤
連接:https://pan.baidu.com/s/14n1tluHohe5Il_9vi1w9SA  密碼:n2sc

修改本機hosts文件

  修改hosts文件,域名綁定ip(綁定的是nginx負載均衡的ip地址!!),不能直接修改hosts文件,須要複製出來後,修改完畢後,在覆蓋回去

mac方式

操做步驟:訪達->shift+command+G->/private/etc

windows方式

文件位置:C:\Windows\System32\Drivers\etc

修改hosts文件

 

集羣

結構圖

 

nginx負載均衡nginx.conf

 

nginx.conf

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

    keepalive_timeout  65;

    #gzip  on;
     # 總站
    upstream entry.com{
           server 192.168.1.111:8080 weight=1;
         server 192.168.1.112:8080 weight=1;
     }
     #北京
    upstream bj.com{
           server 192.168.1.113:8080 weight=1;
         server 192.168.1.114:8080 weight=1;
     }
     #上海
    upstream sh.com{
           server 192.168.1.115:8080 weight=1;
         server 192.168.1.116:8080 weight=1;
     }
    server{
        listen       80;
        server_name  www.entry.com;
           # 負載均衡
        location / {
        proxy_pass http://entry.com;
    }
     }
    server{
        listen       80;
        server_name  bj.entry.com;
           # 負載均衡
        location / {
        proxy_pass http://bj.com;
    }
     }
    server{
        listen       80;
        server_name  sh.entry.com;
           # 負載均衡
        location / {
        proxy_pass http://sh.com;
    }
     }
}

測試(虛擬主機&負載均衡)

搞定!!!!

相關文章
相關標籤/搜索