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;

}

posted @ 2020-03-08 17:23  你樊不樊  阅读(764)  评论(0编辑  收藏  举报