一、nginx反向代理简单配置
1、准备nginx环境
这篇文章的前提是已经配置好了NGINX,而且tomcat已经配置好了,而且能能够访问了。
反向代理不同端口(本案例均是单节点)
这里介绍一台nginx服务器(192.168.83.130),代理两个本机的tomcat(端口分别为:192.168.83.130:8080、192.168.83.130:8081),下面是安装后情况:
1)nginx目录:
2)tomcat实例:
首先在两个tomcat的/conf/server.xml里面分别配置端口如下:
分别重启待用。
重启tomcat命令:
#首先,进入Tomcat下的bin目录cd tomcat安装目录/bin# 使用Tomcat关闭命令
./shutdown.sh# 查看Tomcat是否以关闭ps -ef|grep java# 如果显示以下相似信息,说明Tomcat还没有关闭
root 12976 1 0 Sep01 ? 00:10:22 /usr/java/jdk1.7.0_80/bin/java -Djava.util.logging.config.file=/usr/local/tomcat/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djdk.tls.ephemeralDHKeySize=2048 -Djava.endorsed.dirs=/usr/local/tomcat/endorsed -classpath /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar -Dcatalina.base=/usr/local/tomcat -Dcatalina.home=/usr/local/tomcat -Djava.io.tmpdir=/usr/local/tomcat/temp org.apache.catalina.startup.Bootstrap start#如果你想直接干掉Tomcat,你可以使用kill命令,直接杀死Tomcat进程kill -9 12976#然后继续查看Tomcat是否关闭ps -ef|grep java#如果出现以下信息,则表示Tomcat已经关闭
root 19955 19757 0 17:48 pts/0 00:00:00grep java#启动Tomcat(在bin目录下执行命令)
./startup.sh#查看tomcat日志(记得切换路径哦)tail -f catalina.out
2、nginx的具体配置
然后在nginx的/conf/nginx.conf下设置如下:
设置完成后重启nginx。
浏览器输入主机ip:http://192.168.83.130/,显示如下
二、负载均衡具体配置
1、上面一种情况是对不同端口的代理 ,也可以采用负载均衡设置(upstream)
这里对不同的ip采用的ip hash策略。
upstream server_tomcat{
ip_hash;
server 10.1.14.228:8080 weight=8;
server 10.1.14.228:80 weight=2;}
server{
listen 8887;
server_name localhost;#charset koi8-r;#access_log logs/host.access.log main;
location /{
root html;
proxy_pass http://server_tomcat;
proxy_set_header Host$host:$server_port;
index index.html index.htm;}
注意 这里的proxy_set_header Host $host;一定要设置,否则无法使用upstream反向代理。报错如下(
upstream后的是tomcat的实例名称,必须和proxy_pass 后面的server_tomcat是同一个实例。
2、 nginx之http反向代理多台服务器(不同的ip的负载均衡)
1)conf文件设置
一个主机(192.168.83.130)代理另2台主机(192.168.83.128、192.168.83.131)上的tomcat类似,只要将 upstream里的ip换掉就行了。
注意 这里的proxy_set_header Host $host;一定要设置,否则无法使用upstream反向代理。
upstream server_tomcat{
ip_hash;
server 192.168.83.131:8081 weight=2;
server 192.168.83.128:8080 weight=8;}
2)参数含义
是Nginx可以基于ngx_http_upstream_module模块提供服务器分组转发、权重分配、状态监测、调度算法等高级功能。
http upstream配置参数:
upstream name#自定义一组服务器,配置在http内;指定upstream服务器组的名称,名称中不能包含"_",否则会报错;upstream可以和server配置在一个文件中,也可以单独一个文件,但是upstream不能配置在server里面。
server address parameters;
address可以配置为IP、域名、unix套接字;
parameters参数可以配置下面几种:
weight=number#设置权重,默认为1。
max_conns=number#给当前server设置最大活动链接数,默认为0表示没有限制。
max_fails=number#对后端服务器连续监测失败多少次就标记为不可用。
fail_timeout=time#对后端服务器的单次监测超时时间,默认为10秒。
backup#设置为备份服务器,当所有服务器不可用时将重新启用次服务器。
down#标记为down状态。
resolve#当server定义的是主机名的时候,当A记录发生变化会自动应用新IP而不用重启Nginx。hash KEY consistent;#基于指定key做hash计算,使用consistent参数,将使用ketama一致性hash算法,适用于后端是Cache服务器(如varnish)时使用,consistent定义使用一致性hash运算,一致性hash基于取模运算。KEY可以设置为$request_uri,基于用户的请求的uri做hash运算。
ip_hash;#源地址hash调度方法,基于的客户端的remote_addr(源地址)做hash计算,以实现会话保持。
least_conn;#最少连接调度算法,优先将客户端请求调度到当前连接最少的后端服务器。
注:调度算法需要设置在upstream中;默认调度算法是轮询。