Nginx反向代理的两种配置方式

2022-08-19 11:25:59

一、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中;默认调度算法是轮询。

nginx之http反向代理多台服务器

三、反向代理web架构

在这里插入图片描述

  • 作者:sheep8521
  • 原文链接:https://blog.csdn.net/sheep8521/article/details/115551459
    更新时间:2022-08-19 11:25:59