nginx配置反向代理和负载均衡完结篇
具体安装配置参考之前的文章
@
一,nginx操作的常用命令
使用nginx
操作命令的前提条件:必须进入nginx
的目录
/usr/local/nginx/sbin
# 查看nginx版本号
./nginx -v
# 关闭nginx
./nginx -s stop
# 开启nginx
./nginx
# 重新加载nginx
./nginx -s reload
nginx配置文件
nginx
配置文件的位置
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
(进入tomcat
的bin
目录中,执行./startup.sh
文件开启tomcat
)
可以访问到
进入nginx
的配置文件中,修改server_name
为linux
本机的ip
地址。
这样子配置以后,当window
浏览器访问192.168.186.128
并且端口是80时,nginx会转发到http://127.0.0.1:8080的地址。
配置完成,还需要重新加载nginx
才能生效
cd /usr/local/nginx/sbin 进入sbin目录
# 执行命令重新加载
./nginx -s reload
然后就实现了nginx
反向代理。
三,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
目录下新建两个文件夹tomcat8080
和tomcat8081
,使用xftp
分别给这两个文件夹传入tomcat压缩包。
如果上传错误就是用命令chmod 777 文件夹名
赋予权限就可以了。
分别解压
tar -xvf apache-tomcat-7.0.96.tar.gz
启动8080端口的tomcat
启动8081端口的tomcat
,解压之后进入到tomcat
的conf
目录中,编辑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端口
再分别改成8081端口和8019端口
然后把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.
创建文件夹和测试页面,做测试的准备工作。
分别在两个tomcat
的webapps
文件夹中新建文件夹;
在8080端口的tomcat
的webapps
中新建文件夹edu
,在edu
中新建html
文件<h1>8080端口</h1>
;
在8081端口的tomcat
的webapps
中新建文件夹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地址。
然后重新加载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端口,上面已经准备过了。
- 在两台
tomcat
的webapps
目录中分别都创建edu
文件夹,在edu
文件夹中新建a.html
文件 - 在nginx的配置文件中进行负载均衡的配置
负载均衡配置
在下面的位置添加以下配置。
在server{}中再加入以下规则
测试:在window浏览器进行访问
刷新以下浏览器,会访问8081端口的tomcat,一直刷新一直在切换。
这说明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;
}
-------------------------------------------
个性签名:独学而无友,则孤陋而寡闻。做一个灵魂有趣的人!
如果觉得这篇文章对你有小小的帮助的话,记得在右下角点个“推荐”哦,博主在此感谢!
万水千山总是情,打赏一分行不行,所以如果你心情还比较高兴,也是可以扫码打赏博主,哈哈哈(っ•̀ω•́)っ✎⁾⁾!