nginx配置tomcat的反向代理

nginx配置tomcat的反向代理

浏览次数:
信息来源: 用户投稿
更新日期: 2026-01-02
文章简介

nginx与其他服务器的性能比较:tomcat服务器面向java语言,是重量级的服务器,而nginx是轻量级的服务器。apache服务器稳定、开源、跨平台,但是apache服务器不支持高并发,n

2025阿里云双十一服务器活动

nginx与其他服务器的性能比较:

tomcat服务器面向java语言,是重量级的服务器,而nginx是轻量级的服务器。apache服务器稳定、开源、跨平台,但是apache服务器不支持高并发,nginx能支持处理百万级的tcp连接,10万以上的并发连接,并且是一个很好的跨平台服务器。nginx主要优点有可以实现高并发、部署简单、内存消耗少、成本低等,主要缺点有rewrite功能不够强大,模块没有apache的多。

本篇主要讲解nginx+tomcat反向代理和负载均衡的部署,以通俗实用为主。本篇文章每个部分之间没有太大关系,可根据需求分开学习。

下来看一下nginx反向代理的过程:

nginx负载均衡的过程(会自动选择压力较小的服务器进行访问):

可以看出,负载均衡是通过反向代理的原理实现的,所以也称反向代理的负载均衡。所以我们会部署负载均衡,那么反向代理也就会了。

负载均衡实现的方式分为软件实现和硬件实现两种,硬件实现运行的效率非常高,但是对应的成本也非常高。软件实现运行效率不如硬件,但是成本相对来说低得多。而使用nginx服务器实现负载均衡,那么就是通过软件的方式来实现负载均衡,并且nginx本身支持高并发等。故而使用nginx服务器实现负载均衡,能大大节约企业的成本,并且由于nginx是服务器软件,其执行效率也是非常高。本篇的目的也就是帮助大家使用nginx实现负载均衡。

负载均衡的核心就是建立一个服务器集群,然后用户首先访问到第三方代理服务器(这里我们选用nginx),然后由代理服务器选择一个集群中的服务器,然后将请求引入选定的服务器(这里我们选用tomcat)。

如下图,通过反向代理我们实现下面的负载均衡,这里我们假定四台服务器公网的ip,一台做代理服务器,三台做负载均衡下的服务器:

好了,整体架构已经基本上清晰了,下来我们来具体实现下:

提示:本篇我们基本上都是使用ssh进行相关操作的,windows下可以尝试安装putty,mac下直接使用系统自带的终端工具即可。

1.linux下搭建nginx服务器

我们在192.168.2.20这台服务器上搭建nginx服务器:

$scp~/downloads/nginx-1.10.2.tar.gzroot@192.168.2.20:/usr/local

3)安装nginx

$sshroot@192.168.2.20//ssh连接

#yum-yinstallgccgcc-c++autoconfautomake//gcc、gcc-c++的库文件

#yuminstall-ypcrepcre-devel//安装nginx依赖包

#yuminstall-yzlibzlib-devel

注意:-y表示遇到判断全部yes,autoconf表示自动配置,automake表示自动编译。

#tar-zxvfnginx-1.10.2.tar.gz//解压缩

#cdnginx-1.10.2//切换到该目录下

#https://www.fruan.com/post/configure//配置

#makeinstall//安装

检验是否完成安装:

/usr/local/nginx/sbin/nginx-c/usr/local/nginx/conf/nginx.conf

2)停止nginx服务器:

停止nginx服务器首先要查询nginx的主进程号(masterprocess),假设此处查询得到1060(方便下面演示使用):

ps-ef|grepnginx//查看nginx的主进程号(masterprocess),假设此处查询得到1060

kill-term1060

强制停止:

/usr/local/nginx/sbin/nginx-t-c/usr/local/nginx/conf/nginx.conf//验证

/usr/local/nginx/sbin/nginx-v//查看当前版本

下面进行平滑升级:

#tar-zxvfnginx-1.11.6.tar.gz//解压缩新版本nginx

#cdnginx-1.11.6//切换到该目录下

#https://www.fruan.com/post/configure//配置

#cd/usr/local/nginx/sbin//打开旧版本nginx可执行文件位置

#cpnginxnginx.old//备份旧版本nginx可执行文件,防止升级错误而无法恢复

#cp-rfp/usr/local/nginx-1.11.6/objs/nginx/usr/local/nginx/sbin//复制新版本可执行文件到旧版本处

#rm-f/usr/local/nginx-1.11.6.tar.gz//善后工作删除压缩文件

#rm-rf/usr/local/nginx-1.11.6//删除文件夹

至此,nginx服务器平滑升级成功。

3.nginx中负载均衡的实现

我们还是先连接ssh,然后进行下面操作(一般不建议修改默认主配置文件nginx.conf,所以我们新建负载均衡配置文件fzjh.conf,保证服务器安全,如下):

设置低权限用户,为了安全而设置的

#error_loglogs/error.log;

#error_loglogs/error.lognotice;

#error_loglogs/error.loginfo;

#设置pid存放路径(pid是控制系统中重要文件)

#主要是用于设置一组可以在proxy_pass和fastcgi_pass指令中使用额代理服务器,默认负载均衡方式为轮询

#设置同一个cookie的两次/多次请求,请求的是同一台服务器

#weight权重,默认1,权重越大访问概率越大,backup备用服务器,服务器全部崩溃后启动

server192.168.2.21:8080weight=5;

server192.168.2.22:8080weight=5;

server192.168.2.23:8080weight=5backup;

#开启gzip压缩,开启后,访问网页会自动压缩

server_nametest.nginxtest.net;

#location/指用根目录做负载均衡

proxy_passhttp://tomcat_client;

proxy_set_headerhost$host;

proxy_set_headerx-real-ip$remote_addr;

}

输入完成后按下esc,然后输入:

:wq!

就可以保存并退出负载均衡的配置文件了,下来我们加载我们的配置文件:

#/usr/local/nginx/sbin/nginx//启动nginx

nginx配置tomcat的反向代理

至此,nginx服务器部署完毕。下面我们开始部署负载均衡下的那三台真实提供数据的服务器。

4.linux下安装jdk

我们在192.168.2.21、192.168.2.22、192.168.2.23这三台服务器安装jdk,以192.168.2.21为例:

$scp~/downloads/jdk-8u112-linux-x64.tar.gzroot@192.168.2.21:/usr/local

3)安装jdk

$sshroot@192.168.2.21//ssh连接

#tar-zxvfjdk-8u112-linux-x64.tar.gz//解压缩

#mvjdk1.8.0_112/jdk//将jdk1.8.0_112重命名为jdk

#vi/etc/profile//用vi编辑器打开文件,然后按键盘的i

下来我们移动光标至最后面,两个回车换行,然后添加下面代码配置java的环境变量:

java_home="/usr/local/jdk"

class_path="$java_home/lib:$java_home/jre/lib"

path=".:$path:$java_home/bin"

catalina_home="/usr/local/tomcat"

exportjava_homecatalina_home

输入完成后按下esc,然后输入:

:wq!

就可以保存并退出了。此时我们想让其立即生效,则需要继续输入命令:

java-version

如果返回java版本号则安装成功。

5.linux下搭建tomcat服务器

我们在192.168.2.21、192.168.2.22、192.168.2.23这三台服务器搭建tomcat服务器,以192.168.2.21为例:

2)上传服务器tomcat安装包

$scp~/downloads/apache-tomcat-8.5.9.tar.gzroot@192.168.2.21:/usr/local

3)安装tomcat

$sshroot@192.168.2.21//ssh连接

#tar-zxvfapache-tomcat-8.5.9.tar.gz//解压缩

#mvapache-tomcat-8.5.9/tomcat//将apache-tomcat-8.5.9重命名为tomcat

4)设置tomcat网页文件目录

tomcat默认网页文件的路径是/usr/local/tomcat/webapps/root,但是一般我们不在这里存放,我们在linux根目录新建data/wwwroot目录:

#cd/usr/local/tomcat/conf

/usr/local/tomcat/bin/startup.sh

2)停止tomcat服务器:

#/usr/local/tomcat/bin/shutdown.sh

到此,nginx+tomcat负载均衡集群已经部署完毕了。不过有了服务器,肯定也少不了数据库,下面拓展一下linux下安装mysql数据库的方法。

7.linux下安装mysql数据库

我们重新找了192.168.2.30这台服务器上mysql数据库:

$scp~/downloads/mysql-5.1.51.tar.gzroot@192.168.2.30:/usr/local

3)安装mysql

$sshroot@192.168.2.30//ssh连接

#groupaddmysql//建立mysql的组

#useraddmysql-gmysql//增加用户mysql到mysql的组中

#yum-yinstallncurses-devel

#tar-zxvfmysql-5.1.51.tar.gz//解压缩

#https://www.fruan.com/post/configure--prefix=/usr/local/mysql--with-mysqld-ldflags=-all-static--with-client-ldflags=-all-static--with-readline--with-sll

//配置,设置安装路径,设置编译mysql不带共享库,设置编译client不带共享库,设置要以rmp的方式安装tar包,设置以rmp的方式安装opensll

#makeinstall//安装,在make[4]的时候等待时间比较长,几分钟到十几分钟,都是正常现象

#/usr/local/mysql/bin/mysql_install_db--user//对安装好的mysql进行初始化

#cphttps://www.fruan.com/post/support-files/mysql.server/etc/init.d/mysql//将mysql启动服务复制到系统中并重命名为mysql

#cphttps://www.fruan.com/post/support-files/my-medium.cnf/etc/my.cnf//复制规则文件

#chmod755/etc/init.d/mysql//更改文件权限

//文件权限由三个数字组成,第一位:文件拥有者的权限,第二位:文件拥有者同组的人的权限,第三位:文件拥有者非同组人的权限

//7:可读可写可执行,5:可读可执行

#chown-rmysql.//将/usr/local/mysql的拥有者更改为mysql

#chgrp-rmysql.//将/usr/local/mysql归到mysql组中

#kill-93632//将mysql所有进程号依次杀死,这里假定是3632

#/usr/local/mysql/bin/mysql_install_db--user=mysql//再次初始化

#servicemysqlstart//启动mysql

/usr/local/mysql/bin/mysql-uroot-p

如果输入密码后可以登进mysql,那么就测试成功。下面我们设置mysql允许开启远程连接:

#/usr/local/mysql/bin/mysql-uroot-p

mysql>grantallprivilegeson*.*to'root'@'%'identifiedby'123456'withgrantoption;

//创建用户用于远程连接(root:用户名,%:所有电脑都可以连接,也可以设置某个ip地址运行连接,123456:密码)

mysql>flushprivileges;//立即生效

下面我们查询一下数据库的用户:

mysql>selectdistinctconcat('user:''',user,'''@''',host,''';')asqueryfrommysql.user;

mysql>\q//登出

找一台电脑测试一下,使用navicat远程登录mysql,登进成功。

以上就是Nginx+Tomcat反向代理、负载均衡、集群部署的方法的详细内容,更多请关注主机测评网其它相关文章!

标签:
如何以完全匿名的方式使用比特币支付托管费用
« 上一篇
返回列表
下一篇 »

如本文对您有帮助,就请抽根烟吧!