具体安装配置参考之前的文章


目录


一,nginx操作的常用命令

使用​​nginx​​​操作命令的前提条件:必须进入​​nginx​​的目录

/usr/local/nginx/sbin
# 查看nginx版本号
./nginx -v
# 关闭nginx
./nginx -s stop
# 开启nginx
./nginx
# 重新加载nginx
./nginx -s reload

nginx配置文件

​nginx​​配置文件的位置

nginx配置反向代理和负载均衡完结篇_tomcat

​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配置反向代理和负载均衡完结篇_nginx_02

进入​​nginx​​​的配置文件中,修改​​server_name​​​为​​linux​​​本机的​​ip​​地址。

nginx配置反向代理和负载均衡完结篇_Linux_03

这样子配置以后,当​​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配置反向代理和负载均衡完结篇_Linux_04

三,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​

nginx配置反向代理和负载均衡完结篇_Linux_05

启动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端口

nginx配置反向代理和负载均衡完结篇_nginx_06

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

nginx配置反向代理和负载均衡完结篇_Linux_07

然后把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配置反向代理和负载均衡完结篇_apache_08

找到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配置反向代理和负载均衡完结篇_apache_09

然后重新加载nginx,进到​​/usr/local/nginx/sbin​​目录

# 先关掉nginx
./nginx -s stop
# 再开启nginx
./nginx

测试:在windows浏览器中访问

nginx配置反向代理和负载均衡完结篇_nginx_10

nginx反向代理就完成了。

四,nginx配置负载均衡

实现效果:浏览器地址栏输入http://192.168.186.128/edu/a.html,负载均衡效果,平均到8080端口和8081端口中。

准备工作:


  • 两台tomcat服务器,一个8080端口,一个8081端口,上面已经准备过了。
  • 在两台​​tomcat​​​的​​webapps​​​目录中分别都创建​​edu​​​文件夹,在​​edu​​​文件夹中新建​​a.html​​文件
  • 在nginx的配置文件中进行负载均衡的配置

负载均衡配置

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

nginx配置反向代理和负载均衡完结篇_nginx_11

在server{}中再加入以下规则

nginx配置反向代理和负载均衡完结篇_tomcat_12

测试:在window浏览器进行访问

nginx配置反向代理和负载均衡完结篇_Linux_13

刷新以下浏览器,会访问8081端口的tomcat,一直刷新一直在切换。

nginx配置反向代理和负载均衡完结篇_tomcat_14

这说明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;

}




作者:樊同学