nginx配置反向代理和負載均衡完結篇


具體安裝配置參考之前的文章


@

一,nginx操作的常用命令

使用nginx操作命令的前提條件:必須進入nginx的目錄

/usr/local/nginx/sbin
# 查看nginx版本號
./nginx -v
# 關閉nginx
./nginx -s stop
# 開啟nginx
./nginx
# 重新加載nginx
./nginx -s reload

nginx配置文件

nginx配置文件的位置

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-UpyTH3xR-1572243075130)(D:\文件筆記\image\1572228997480.png)]

nginx配置文件由三部分組成

  • 第一部分,全局塊

    • 從配置文件開始到events塊之間的內容,主要會設置一些影響nginx服務器整體運行的配置指令。
    • 比如 word_processes 1;值越大,可以支持的並發處理量也越多。
  • 第二部分,events

    • events塊設計的指令主要影響nginx服務器與用戶的網絡連接,
    • 比如 worker_connections 1024;支持的最大連接數。
  • 第三部分,http

    • nginx服務器配置中最頻繁的部分
    • http塊也包括http全局塊、server塊。

二,nginx配置反向代理(1)

反向代理的本質目的:當window瀏覽器訪問192.168.186.128並且端口是80時,nginx會轉發到http://127.0.0.1:8080的地址。

首先啟動linux虛擬機中的tomcat(進入tomcatbin目錄中,執行./startup.sh文件開啟tomcat

可以訪問到

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-jtc3qkCN-1572243075131)(D:\文件筆記\image\1572230412392.png)]

進入nginx的配置文件中,修改server_namelinux本機的ip地址。

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-yXemSW5i-1572243075132)(D:\文件筆記\image\1572231243805.png)]

這樣子配置以后,當window瀏覽器訪問192.168.186.128並且端口是80時,nginx會轉發到http://127.0.0.1:8080的地址。

配置完成,還需要重新加載nginx才能生效

cd /usr/local/nginx/sbin 進入sbin目錄
# 執行命令重新加載
./nginx -s reload

然后就實現了nginx反向代理。

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-qUzCekr0-1572243075133)(D:\文件筆記\image\1572232234636.png)]

三,nginx配置反向代理(2)

要實現的效果:使用nginx反向代理,根據訪問的路徑不同跳轉到不同的服務端口中。

准備工作:准備兩個tomcat服務器,一個8080端口,一個8081端口。

首先把剛才的tomcat進程殺掉

[root@bogon src]# ps -ef | grep tomcat
root       8298      1  0 22:36 pts/0    00:00:04 /usr/local/java/jdk1.8.0_231/bin/java -Djava.util.logging.config.file=/opt/apache-tomcat-7.0.96/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djdk.tls.ephemeralDHKeySize=2048 -Dignore.endorsed.dirs= -classpath /opt/apache-tomcat-7.0.96/bin/bootstrap.jar:/opt/apache-tomcat-7.0.96/bin/tomcat-juli.jar -Dcatalina.base=/opt/apache-tomcat-7.0.96 -Dcatalina.home=/opt/apache-tomcat-7.0.96 -Djava.io.tmpdir=/opt/apache-tomcat-7.0.96/temp org.apache.catalina.startup.Bootstrap start
root       8949   2973  0 23:17 pts/0    00:00:00 grep --color=auto tomcat
[root@bogon src]# kill 8298
[root@bogon src]# ps -ef | grep tomcat
root       8957   2973  0 23:18 pts/0    00:00:00 grep --color=auto tomcat

然后在/usr/src目錄下新建兩個文件夾tomcat8080tomcat8081,使用xftp分別給這兩個文件夾傳入tomcat壓縮包。

如果上傳錯誤就是用命令chmod 777 文件夾名賦予權限就可以了。

分別解壓

tar -xvf apache-tomcat-7.0.96.tar.gz

啟動8080端口的tomcat

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-p8GzNzy8-1572243075134)(D:\文件筆記\image\1572233627026.png)]

啟動8081端口的tomcat,解壓之后進入到tomcatconf目錄中,編輯server.xml配置文件

[root@bogon tomcat8081]# ls
apache-tomcat-7.0.96  apache-tomcat-7.0.96.tar.gz
[root@bogon tomcat8081]# cd apache-tomcat-7.0.96/
[root@bogon apache-tomcat-7.0.96]# ls
bin  BUILDING.txt  conf  CONTRIBUTING.md  lib  LICENSE  logs  NOTICE  README.md  RELEASE-NOTES  RUNNING.txt  temp  webapps  work
[root@bogon apache-tomcat-7.0.96]# cd conf
[root@bogon conf]# ls
catalina.policy  catalina.properties  context.xml  logging.properties  server.xml  tomcat-users.xml  web.xml
[root@bogon conf]# vim server.xml

首先把這個改成8015端口

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-2UTcOCgQ-1572243075135)(D:\文件筆記\image\1572234106158.png)]

再分別改成8081端口和8019端口

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-gzk8KkAl-1572243075137)(D:\文件筆記\image\1572234203649.png)]

然后把8081端口的tomcat也啟動起來

[root@bogon bin]# ls
bootstrap.jar  catalina-tasks.xml            configtest.bat  digest.bat        setclasspath.sh  startup.bat      tomcat-native.tar.gz  version.bat
catalina.bat   commons-daemon.jar            configtest.sh   digest.sh         shutdown.bat     startup.sh       tool-wrapper.bat      version.sh
catalina.sh    commons-daemon-native.tar.gz  daemon.sh       setclasspath.bat  shutdown.sh      tomcat-juli.jar  tool-wrapper.sh
[root@bogon bin]# ./startup.sh
Using CATALINA_BASE:   /usr/src/tomcat8081/apache-tomcat-7.0.96
Using CATALINA_HOME:   /usr/src/tomcat8081/apache-tomcat-7.0.96
Using CATALINA_TMPDIR: /usr/src/tomcat8081/apache-tomcat-7.0.96/temp
Using JRE_HOME:        /usr/local/java/jdk1.8.0_231
Using CLASSPATH:       /usr/src/tomcat8081/apache-tomcat-7.0.96/bin/bootstrap.jar:/usr/src/tomcat8081/apache-tomcat-7.0.96/bin/tomcat-juli.jar
Tomcat started.

創建文件夾和測試頁面,做測試的准備工作。

分別在兩個tomcatwebapps文件夾中新建文件夾;

在8080端口的tomcatwebapps中新建文件夾edu,在edu中新建html文件<h1>8080端口</h1>;

在8081端口的tomcatwebapps中新建文件夾vod,在vod中新建html文件<h1>8081!!</h1>;

然后分別在windows瀏覽器訪問

在這里插入圖片描述

找到nginx配置文件,進行反向代理的配置

[root@bogon vod]# cd /usr/local/nginx/conf
[root@bogon conf]# ls
fastcgi.conf          fastcgi_params          koi-utf  mime.types          nginx.conf          scgi_params          uwsgi_params          win-utf
fastcgi.conf.default  fastcgi_params.default  koi-win  mime.types.default  nginx.conf.default  scgi_params.default  uwsgi_params.default
[root@bogon conf]# vim nginx.conf

添加一下配置

說明:監聽192.168.186.128:9001地址,如果后面路徑是edu,轉發到http://127.0.0.1:8080地址;如果后面地址vod,則轉發到http://127.0.0.1:8081地址。

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-PVLth4pP-1572243075139)(D:\文件筆記\image\1572239640330.png)]

然后重新加載nginx,進到/usr/local/nginx/sbin目錄

# 先關掉nginx
./nginx -s stop
# 再開啟nginx
./nginx

測試:在windows瀏覽器中訪問

在這里插入圖片描述

nginx反向代理就完成了。

四,nginx配置負載均衡

實現效果:瀏覽器地址欄輸入http://192.168.186.128/edu/a.html,負載均衡效果,平均到8080端口和8081端口中。

准備工作:

  • 兩台tomcat服務器,一個8080端口,一個8081端口,上面已經准備過了。
  • 在兩台tomcatwebapps目錄中分別都創建edu文件夾,在edu文件夾中新建a.html文件
  • 在nginx的配置文件中進行負載均衡的配置

負載均衡配置

在下面的位置添加以下配置。

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-eaAiJtbc-1572243075140)(D:\文件筆記\image\1572241230817.png)]

在server{}中再加入以下規則

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-7LgV8V7n-1572243075140)(D:\文件筆記\image\1572241450715.png)]

測試:在window瀏覽器進行訪問

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-VmH0Jeom-1572243075141)(D:\文件筆記\image\1572241732938.png)]

刷新以下瀏覽器,會訪問8081端口的tomcat,一直刷新一直在切換。

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-F3IESd8w-1572243075142)(D:\文件筆記\image\1572241755411.png)]

這說明nginx把多次請求平均分攤到不同的服務器中,實現了負載均衡。

nginx負載均衡的分配服務器策略

第一種:輪詢

每個請求按時間順序逐一分配到不同的后端服務器,如果后端服務器down掉,能自動剔除。

第二種:weight權重

weight代表權重,默認是1,權重越高被分配的客戶端越多。

upstream myserver {

server 192.168.186.128:8080 weight=5;

server 192.168.186.128:8080 weight=10;

}

第三種:ip_hash

每個請求按訪問ip的hash結果分配,這樣每個訪客固定訪問要給后端服務器,可以解決session共享的問題(單點登錄會遇到這個問題)。

upstream myserver {

ip_hash;

server 192.168.186.128:8080;

server 192.168.186.128:8080 ;

}

第四種:fair(第三方)

按后端服務器的響應時間來分配請求,響應時間短的優先分配。

upstream myserver {

server 192.168.186.128:8080;

server 192.168.186.128:8080 ;

fair;

}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM