Java Web上架流程(Nginx反向代理+负载均衡 ,Apache配置,Maven安装打包,Tomcat配置)

架构

Nginx(Ubuntu)做反向代理配置负载均衡,Centos做Web应用服务器,第二台Centos做负载均衡

apache安装配置

apache安装配置

配置 Ubuntu(Nginx)

1.Ubuntu 安装 Nginx

复制代码
[^_^][root@ubuntu ~]# apt update
[^_^][root@ubuntu ~]# apt install nginx -y

2.配置 Nginx 反向代理

复制代码
[^_^][root@ubuntu ~]# vim /etc/nginx/sites-available/default #编辑配置文件

3.测试配置并重启 Nginx

复制代码
[^_^][root@ubuntu ~]# nginx -t   # 检查配置文件语法是否正确
[^_^][root@ubuntu ~]# systemctl reload nginx

确保 CentOS 上的 Apache 允许来自 Nginx 的请求

检查 Apache 监听地址,防火墙放行 80 端口

复制代码
[T_T][root@localhost ~]# netstat -tulnp | grep :80
tcp6	  0      0  :::80                :::*
LISTEN     1262/httpd
[^_^][root@localhost ~]# sudo firewall-cmd --add-port=80/tcp
--permanent success
[^_^][root@localhost ~]# firewall-cmd --reload
success

测试从 Ubuntu 访问 CentOS Apache

192.168.100.22

验证反向代理效果

在任意客户端(如浏览器)访问 UbuntuIP


负载均衡

配置第二台 CentOS Apache

1.安装 Apache

复制代码
[root@localhost ~]# yum install httpd -y 
[root@localhost ~]# systemctl start httpd
[root@localhost ~]# systemctl enable httpd

2.修改防火墙允许 80 端口

复制代码
[root@localhost ~]# firewall-cmd --add-port=80/tcp --permanent
success
[root@localhost ~]# firewall-cmd --add-port=80/tcp --permanent
success

3.在 Ubuntu Nginx 上配置负载均衡

复制代码
[^_^][root@ubuntu ~]# vim /etc/nginx/sites-available/default

upstream backend_servers {
# 默认采用轮询(round-robin)策略
server 192.168.100.22:80;
server 192.168.100.124:80;

# 可选:设置权重(例如让 20 的服务器处理更多请求)
# server 192.168.100.22:80 weight=3; # server 192.168.100.124:80 weight=1;

# 可选:健康检查(使用第三方模块如 nginx_upstream_check_module,或通过 max_fails + fail_timeout)
# server 192.168.100.22:80 max_fails=3 fail_timeout=30s; # server 192.168.100.124:80 max_fails=3 fail_timeout=30s;
}

server {
listen 80;
server_name _;	# 或域名

location / {
proxy_pass http://backend_servers; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme;
}
}

4.客户端多次访问 Nginx 前端 IP

分别在两台 centos 上查看日志验证负载均衡

复制代码
[T_T][root@localhost ~]# tail -f /usr/local/httpd/logs/access_log
#通过 源码编译安装,配置文件在 /usr/local/httpd/conf/httpd.conf,日志在
/usr/local/httpd/logs/ 下
[root@localhost ~]# tail -f /var/log/httpd/access_log
#通过 yum 安装的标准版本,配置文件在 /etc/httpd/conf/httpd.conf,日志默认在 /var/log/httpd/ 下

做完负载均衡后访问页面显示的是 Apache 默认测试页,而非之前部署的网站,这通常是因为负载均衡器将请求转发到了错误的 Apache 实例,或者后端的 Apache 服务并未提供您的网站内容

原因:第二台 centos 上的 apache 未更改测试页更改后再次测试


将java web应用到tomcat测试页

Apache(centos)

1.检查是否安装Java,没有就安装java环境

复制代码
[root@localhost ~]# tail -f /var/log/httpd/access_log

#通过 yum 安装的标准版本,配置文件在 /etc/httpd/conf/httpd.conf,日志默认在 /var/log/httpd/ 下

[root@localhost ~]# java -version

openjdk version "1.8.0_262"

OpenJDK Runtime Environment (build 1.8.0_262-b10)

OpenJDK 64-Bit Server VM (build 25.262-b10, mixed mode)

2.安装tomcat

注:优先选择yum安装,因yum源过期这里手动官网安装

复制代码
cd /opt
wget https://dlcdn.apache.org/tomcat/tomcat-9/v9.0.98/bin/apache-tomcat-9.0.98.tar.gz
tar -xzf apache-tomcat-9.0.98.tar.gz

3.安装maven打包

复制代码
[^_^][root@localhost java-demo]# /yum install -y maven

4.将Java-demo.tar.gz打包成.war(一种 JAR 格式 的文件,用于打包和分发 Java Web 应用程序),将打包好后的.war复制到Tomcat,Tomcat 会自动解压并部署

复制代码
[^_^][root@localhost ]#cd /home/yu/桌面/java-demo
mvn clean package
[^_^][root@localhost /home/yu/桌面/java-demo]# ls
db  pom.xml  src  target
复制代码
[^_^][root@localhost /home/yu/桌面/java-demo]# cp /home/yu/桌面/java-demo/target /opt/tomcat9/webapps/

5.启动tomcat,查看日志是否部署成功

复制代码
[^_^][root@localhost ~]# /opt/tomcat9/bin/startup.sh
Using CATALINA_BASE:   /opt/tomcat9
Using CATALINA_HOME:   /opt/tomcat9
Using CATALINA_TMPDIR: /opt/tomcat9/temp
Using JRE_HOME:        /
Using CLASSPATH:       /opt/tomcat9/bin/bootstrap.jar:/opt/tomcat9/bin/tomcat-juli.jar
Using CATALINA_OPTS:   
Tomcat started.

[^_^][root@localhost ~]# tail -f /opt/tomcat9/logs/catalina.out
25-Mar-2026 09:54:02.885 信息 [main] org.apache.catalina.startup.HostConfig.deployDirectory 把web 应用程序部署到目录 [/opt/tomcat9/webapps/examples]
25-Mar-2026 09:54:03.104 信息 [main] org.apache.catalina.startup.HostConfig.deployDirectory Web应用程序目录[/opt/tomcat9/webapps/examples]的部署已在[219]毫秒内完成
25-Mar-2026 09:54:03.105 信息 [main] org.apache.catalina.startup.HostConfig.deployDirectory 把web 应用程序部署到目录 [/opt/tomcat9/webapps/host-manager]
25-Mar-2026 09:54:03.128 信息 [main] org.apache.catalina.startup.HostConfig.deployDirectory Web应用程序目录[/opt/tomcat9/webapps/host-manager]的部署已在[23]毫秒内完成
25-Mar-2026 09:54:03.128 信息 [main] org.apache.catalina.startup.HostConfig.deployDirectory 把web 应用程序部署到目录 [/opt/tomcat9/webapps/manager]
25-Mar-2026 09:54:03.148 信息 [main] org.apache.catalina.startup.HostConfig.deployDirectory Web应用程序目录[/opt/tomcat9/webapps/manager]的部署已在[20]毫秒内完成
25-Mar-2026 09:54:03.148 信息 [main] org.apache.catalina.startup.HostConfig.deployDirectory 把web 应用程序部署到目录 [/opt/tomcat9/webapps/target]
25-Mar-2026 09:54:03.165 信息 [main] org.apache.catalina.startup.HostConfig.deployDirectory Web应用程序目录[/opt/tomcat9/webapps/target]的部署已在[17]毫秒内完成
25-Mar-2026 09:54:03.168 信息 [main] org.apache.coyote.AbstractProtocol.start 开始协议处理句柄["http-nio-8080"]
25-Mar-2026 09:54:03.195 信息 [main] org.apache.catalina.startup.Catalina.start [4808]毫秒后服务器启动

6.防火墙放行,允许8080端口(Tomcat 默认监听 8080 端口)

复制代码
firewall-cmd --permanent --add-port=8080/tcp
firewall-cmd --reload

7.Ubuntu(nginx)编辑反向代理,检查,重启

复制代码
upstream backend_servers {
    # 默认采用轮询(round-robin)策略
    server 192.168.100.22:8080;
    server 192.168.100.124:80;

    # 可选:设置权重(例如让 20 的服务器处理更多请求)
    # server 192.168.100.22:80 weight=3;
    # server 192.168.100.124:80 weight=1;

    # 可选:健康检查(使用第三方模块如 nginx_upstream_check_module,或
通过 max_fails + fail_timeout)
    # server 192.168.100.22:80 max_fails=3 fail_timeout=30s;
    # server 192.168.100.124:80 max_fails=3 fail_timeout=30s;
}


server {
    listen 80;
    server_name 192.168.100.212;   # 或域名

    location / {
        proxy_pass http://backend_servers;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        charset utf-8;
        proxy_set_header Accept-Encoding "";
    }
}



nginx -t
systemctl reload nginx

8.将java web替换掉tomcat测试页,重启tomcat,查看验证

复制代码
cp /home/yu/桌面/java-demo/target/webapps/ROOT/
rm -rf*
cd -
ls
unzip ly-simple-tomcat-0.0.1-SNAPSHOT.war
cd /home/yu/桌面/java-demo/target /opt/tomcat9/bin # 手动解压安装
./shutdown.sh
./startup.sh

外网访问,用花生壳做内网穿透

相关推荐
紫_龙2 小时前
最新版vue3+TypeScript开发入门到实战教程之路由详解二
前端·javascript·typescript
Bert.Cai2 小时前
Python标识符详解
开发语言·python
嵌入式小能手2 小时前
飞凌嵌入式ElfBoard-环境变量之添加修改环境变量setenv
服务器·前端·javascript
polarisya2 小时前
vue组件二次封装
前端·javascript·vue.js
lifewange2 小时前
insert
开发语言·python
逸Y 仙X2 小时前
文章十二:索引数据的写入和删除
java·大数据·spring boot·spring·elasticsearch·搜索引擎·全文检索
郭泽斌之心2 小时前
Live2D工程对接Fay数字人框架
前端·经验分享·fay数字人
前端搬砖人沐兮2 小时前
被忽视的宝藏:深入解读 createRangeFromPoint 的前世今生与实战技巧
前端
kyriewen2 小时前
手写 Promise:从“我会用”到“我会造”
前端·javascript·面试