当前位置: 首页 > ds >正文

Nginx反向代理与负载均衡

系统环境:openEuler22.03 LTS

网络拓扑如下:

需求与说明:

  • Web服务器1、Web服务器2和Nginx代理服务器位于同一局域网内;
  • Web服务器1和Web服务器2运行着同一个前后端分离的Java Web项目;
  • 前端项目打包后的dist目录放置在Nginx代理服务器的/usr/local/website/目录下;
  • 后端项目的jar包则分别运行在Web服务器1和Web服务器2中,端口号为8080;
  • 现需配置Nginx服务,实现Nginx反向代理和负载均衡,其中Web服务器2的性能较好,配置权重为2/3。

1 配置nginx代理服务器

1.1 安装nginx

在Nginx服务器上安装nginx软件包。

dnf -y install nginx

1.2 添加nginx系统用户

默认情况下,openEuler会自动添加nginx系统用户,若没有则通过以下命令添加,否则就跳过该操作。

# 查看是否有nginx系统用户
id nginx# 若没有nginx系统用户,则添加
useradd -r -d /var/lib/nginx -s /usr/sbin/nologin 

1.3 编辑nginx配置文件

编辑/etc/nginx/nginx.conf配置文件,重点关注站点根目录root、负载均衡(upstream模块)和反向代理(server模块中的location节)的配置,其它按默认的即可。

[root@nginxproxy ~]# vim /etc/nginx/nginx.confuser nginx;
……此处省略其它配置与注释……http {……此处省略其它配置与注释……include /etc/nginx/conf.d/*.conf;# 添加负载均衡服务器upstream ozonservers {server 192.168.18.20:8080 weight=1;server 192.168.18.30:8080 weight=2;}server {listen       80;listen       [::]:80;server_name  _;root         /usr/local/website/dist;  #此处为Web前端目录所在位置index index.html;# 配置反向代理location /prod-api/ {  #prod-api为后端接口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;proxy_pass http://ozonservers/;  #注意最后面的“/”不能少}# Load configuration files for the default server block.include /etc/nginx/default.d/*.conf;error_page 404 /404.html;location = /40x.html {}error_page 500 502 503 504 /50x.html;location = /50x.html {}}……此处省略后续其它配置与注释……

1.4 配置SELinux

由于Web主目录为自定义的,故需要配置SELinux策略,否则无法方法前端页面。

# 添加安全上下文
semanage fcontext -at httpd_sys_content_t "/usr/local/website(/.*)?"# 生效安全上下文配置
restorecon -Rv /usr/local/website/

1.5 配置防火墙

# 添加防行http服务
firewall-cmd --permanent --add-service=http# 生效配置
firewall-cmd --reload 

1.6 重启nginx服务

重启nginx服务,以便让配置生效。

# 重启服务
systemctl restart nginx.service # 查看服务状态
systemctl status nginx.service 

2 配置Web服务器

两台Web服务器均要操作,以下以某一台为例。

2.1 配置防火墙

因两台Web服务器运行的Java Web后端端口为8080,故需将此端口放行。

# 添加防行8080端口
firewall-cmd --permanent --add-port=8080/tcp# 生效配置
firewall-cmd --reload 

3 测试

浏览器测试访问nginx代理服务器的外部IP地址(192.168.8.10)即可。

http://www.xdnf.cn/news/19375.html

相关文章:

  • 基于单片机指纹考勤系统/智能考勤
  • DeepSeek应用技巧-通过MCP打造数据分析助手
  • YOLOv11 训练参数全解析:一文掌握 epochs、batch、optimizer 调优技巧
  • kali下sqlmap更新失败问题
  • PB-重装系统后,重新注册ole控件,pb中窗口控件失效的问题。
  • 不用公网IP也能?cpolar实现Web-Check远程安全检测(1)
  • 2025年09月计算机二级MySQL选择题每日一练——第十二期
  • 数据结构 | 深度解析二叉树的基本原理
  • 云存储(参考自腾讯云计算工程师认证)
  • 整体设计 的语言设计:通用模型语言的标准模板语言的规格模式语言--含输出(腾讯元宝答问)
  • 漏洞挖掘-信息收集教程
  • 阿里云营业执照OCR接口的PHP实现与技术解析:从签名机制到企业级应用
  • Jdk动态代理 Cglib动态代理
  • Linux 定时器:工作原理与实现机制深入分析
  • STL库——list(类模拟实现)
  • 复制VMware虚拟机后的网络配置
  • 算法---动态规划(持续更新学习)
  • k230 按键拍照后,将摄像头拍照的1920*1080分辨率的图片以jpg文件格式,保存到板载TF存储卡的指定文件夹目录中
  • 营业执照经营范围行业提取工具库项目方案解读(php封装库)
  • 项目管理在企业中的作用
  • Python 多线程日志错乱:logging.Handler 的并发问题
  • 什么是IO多路复用
  • ESPTimer vs GPTimer:ESP32 定时器系统深度解析
  • 【Java基础知识 19】继承
  • Spring注解演进与自动装配原理深度解析:从历史发展到自定义Starter实践
  • 197-200CSS3响应式布局,BFC
  • 内存管理(智能指针,内存对齐,野指针,悬空指针)
  • 时间轴组件开发:实现灵活的时间范围选择
  • PHP单独使用phinx使用数据库迁移
  • Spring Cloud微服务架构设计与实战:从组件落地到分布式事务解决