nginx的反向代理及负载均衡

news2024/9/9 8:13:13

nginx的反向代理

安装包链接https://nginx.org/download/nginx-1.26.1.tar.gz

yum -y install gcc gcc-c++ pcre-devel openssl-devel
[root@staticserver ~]# tar -xzvf nginx-1.26.1.tar.gz 
[root@staticserver nginx-1.26.1]#./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_ssl_module --with-http_stub_status_module --with-http_realip_module --with-stream

[root@staticserver nginx-1.26.1]# make && make install
[root@staticserver nginx-1.26.1]# useradd -s /bin/nologin -M nginx
不用使用systemctl启动,也不要使用脚本启动

[root@model nginx-1.26.1]# /usr/local/nginx/sbin/nginx 
[root@model nginx-1.26.1]# vim /usr/local/nginx/conf/nginx.conf

复制43-46到47,进行修改:


[root@model nginx-1.26.1]# /usr/local/nginx/sbin/nginx -s reload

将当前的主机作为前端服务器,用于接收和响应客户端,代理另外一台主机,克隆一台主机。

修改index.html文件,并且发布web服务

[root@dynamicserver ~]# echo "this is java web srver " > /usr/local/nginx/html/index.html 

启动nginx服务

[root@dynamicserver ~]# /usr/local/nginx/sbin/nginx 

使用curl 访问当前项目

[root@dynamicserver ~]# curl localhost
this is java web srver 

由于没有部署tomcat服务,所以使用nginx代替

切换到静态主机

修改nginx中的html文件

[root@staticserver ~]# echo "this is static server " > /usr/local/nginx/html/index.html 
[root@staticserver ~]# /usr/local/nginx/sbin/nginx         启动nginx

[root@staticserver ~]# ps -aux| grep nginx        查看进程

[root@staticserver ~]# curl localhost
this is static server 
[root@staticserver ~]# curl 192.168.2.40        访问40主机
this is java web srver 

使用39主机代理40主机,当用户访问39的时候,39主机不响应,而是由40主机响应

使用39主机nginx反向代理40的服务器

location proxy_pass 协议 域名 端口

修改配置文件[root@staticserver ~]# vim /usr/local/nginx/conf/nginx.conf

46行

[root@staticserver ~]# /usr/local/nginx/sbin/nginx -s reload
访问192.168.2.40,代理192.168.2.39

现在的静态服务器实际上是代理服务器,nginx代理其他服务的时候,不需要对方同意,更加方便了模块化操作(如果代理服务器,阿双方都需要同意,之前的依赖太高,不便于模块化操作)

总结:

1.一班来说使用nginx代理动态服务器,例如代理tomcat发布的web服务

2.在这个案例中是使用nginx代替的

3.nginx反向代理,是不需要被代理的服务同意的,只需要在nginx中location中配置

./sbin/nginx -s reload         重载配置文件

负载均衡的基础

白名单,黑名单

再克隆一台机器allow,安装步骤如上

[root@allow nginx-1.26.1]# /usr/local/nginx/sbin/nginx 
[root@allow nginx-1.26.1]# echo "you are lucky" > /usr/local/nginx/html/index.html 
[root@allow nginx-1.26.1]# curl localhost
you are lucky
在192.168.2.40主机访问,可以访问到

[root@dynamicserver ~]# curl 192.168.2.41
you are lucky
设置192.168.2.40主机可以访问,其他主机不能访问

在配置文件中中的server模块中设置

allow 允许

deny 禁止

可以对ip生效,也可以对网段生效
[root@allow nginx-1.26.1]# vim /usr/local/nginx/conf/nginx.conf

[root@allow nginx-1.26.1]# /usr/local/nginx/sbin/nginx -s reload

访问:


 

初始安装nginx的时候 logs 日志文件

[root@allow nginx-1.26.1]# cd /usr/local/nginx/
[root@allow nginx]# tree logs/
logs/
├── access.log
├── error.log
└── nginx.pid

0 directories, 3 files

[root@allow nginx]# cat access.log        用户访问的信息

[root@allow nginx]# cat logs/error.log         访问报错的信息

负载均衡

准备四台机器,安装nginx,并且启动nginx

修改static主机的配置文件

[root@staticserver ~]# vim /usr/local/nginx/conf/nginx.conf

[root@staticserver ~]# /usr/local/nginx/sbin/nginx -s reload

权重

ip_hash
当对后端的多台动态应用服务器做负载均衡时, ip_hash 指令能够将某
个客户端 IP 的请求通过哈希算法定位到同一台后端服务器上。
这样,当来自某一个 IP 的用户在后端 Web 服务器 A 上登录后,再访问该
站点的其他 URL ,能保证其访问的还是后端 web 服务器 A
注意 : 使用 ip_hash 指令无法保证后端服务器的负载均衡,可能导致有些
后端服务器接收到的请求多,有些后端服务器接受的请求少,而且设置
后端服务器权重等方法将不起作用
least_conn
least_conn :最少连接,把请求转发给连接数较少的后端服务器。轮询
算法是把请求平均地转发给各个后端,使它们的负载大致相同;但是,
有些请求占用的时间很长,会导致其所在的后端负载较高。这种情况
下, leastconn 这种方式就可以达到更好的负载均衡效果。
url_hash
按访问 url hash 结果来分配请求,使每个 url 定向到同一个后端服务
器,要配合缓存命中来使用。同一个资源多次请求,可能会到达不同的
服务器上,导致不必要的多次下载,缓存命中率不高,以及一些资源时
间的浪费。而使用 ur_hash ,可以使得同一个 url ( 也就是同一个资源请
) 会到达同一台服务器,一旦缓存住了资源,再次收到请求,就可以从
缓存中读取。

平滑升级

服务持续期间对nginx升级

下载新的nginx

  338  wget https://nginx.org/download/nginx-1.27.0.tar.gz
  339  tar -zxvf nginx-1.27.0.tar.gz 
  340  cd nginx-1.27
  341  cd nginx-1.27.0
  343  ./configure --prefix=/usr/local/nginx/ --user=nginx --group=nginx --with-http_ssl_module --with-http_stub_status_module --with-http_realip_module --with-stream
  344  make && make install

[root@staticserver nginx-1.27.0]# ls /usr/local/nginx/sbin/
nginx  nginx.old
[root@staticserver nginx-1.27.0]# /usr/local/nginx/sbin/nginx -v
nginx version: nginx/1.27.0
[root@staticserver nginx-1.27.0]# /usr/local/nginx/sbin/nginx.old -v
nginx version: nginx/1.26.1
  349  ps -aux | grep nginx
  350  kill -USR2 4636
  351  ps -aux | grep nginx
  352  kill -USR2 1367
  353  ps -aux | grep nginx
  354  kill -WINCH 4636
  355  kill -QUIT 1367
  356  ps -aux | grep nginx

还可以访问到页面,升级成功

配置tomcat10

必须在jdk17以上的版本运行

在实际的工作中,不需要这么高的版本,在实训,要求使用新版本,新版本,我们使用新版本,是为了让大家指定各个程序之间版本依赖管理

  321  wget https://download.oracle.com/java/22/latest/jdk-22_linux-x64_bin.tar.gz
  322  tar -zxvf jdk-22_linux-x64_bin.tar.gz
  323  ls
  324  cd jdk-22.0.2/
  326  cd bin/
  327  ./java
  330  cd
  331  mv -r jdk-22.0.2/ /usr/local/jdk22/
  332  mv  jdk-22.0.2/ /usr/local/jdk22/
  333  ls /usr/local/jdk22/
  334  ls
  335  cd /usr/local/jdk22/
  336  pwd
  337  sed -n '$p' /etc/profile
  338  sed -i '$aexport JAVA_HOME=/usr/local/jdk22' /etc/profile
  339  sed -n '$p' /etc/profile
  340  source /etc/profile
  341  $JAVA_HOME
  342  vim /etc/profile
  343  java
  344  sed -i '$aPATH=$JAVA_HOME/bin:$PATH' /etc/profile
  345  sed -n '$p' /etc/profile
  346  java -version
[root@dynamicserver ~]# wget https://dlcdn.apache.org/tomcat/tomcat-10/v10.1.26/bin/apache-tomcat-10.1.26.tar.gz
 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1963789.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

怎么提高视频的声音?提高视频的声音的多种方法

在制作和编辑视频的浩瀚旅途中,声音质量不仅是引导观众情感波动的舵手,更是构建故事氛围、深化主题表达不可或缺的基石。它如同画面背后的灵魂,悄无声息地牵引着每一位观众的思绪,穿梭于现实与想象的边界。从温馨的旁白讲述到激昂…

单天下载1W+?木途美APP对比体验

在当下的民宿市场,木鸟、途家、美团三家民宿预订平台遥遥领先。木鸟民宿最新发布的报告中提到,7月以来民宿订单环比上涨88%,尽管酒店业进入量涨价跌时代,但民宿平台们似乎活得更好了。 特色房源为王永不过时 房源量大意味着覆盖…

Linux系统之DHCP服务配置

1、准备阶段 Windows(客户端)开启Vmnet8网卡Linux6(服务端)网络连接选择NAT模式,并配置IP地址为192.168.11.1/24Linux5(客户端)网络连接选择NAT模式将NAT的DHCP功能取消 2、DHCP服务器相关软件…

(vue)el-cascader级联选择器按勾选的顺序传值,摆脱层级约束

(vue)el-cascader级联选择器按勾选的顺序传值,摆脱层级约束 需求:按勾选的顺序给后端传值 难点:在 Element UI 的 el-cascader 组件中,默认的行为是根据数据的层级结构来显示选项,用户的选择也会基于这种层级结构,el-…

SQL必知必会

SQL必知必会 一些SQL知识,出自极客时间陈旸老师《SQL必知必会》 https://time.geekbang.org/column/intro/100029501 基础 视图 视图作为一张虚拟表,帮我们封装了底层与数据表的接口。它相当于是一张表或多张表的数据结果集。视图的这一特点&#x…

【C/C++】C语言到C++的入门知识点(主要适用于C语言精通到Qt的C++开发入门)

【C/C】C语言到C的入门知识点(主要适用于C语言精通到Qt的C开发入门) 文章目录 C语言与C的不同C中写C语言代码C语言到C的知识点Qt开发中需要了解的C基础知识namespace输入输出字符串类型class类构造函数和析构函数(解析函数)类的继…

20240801 每日AI必读资讯

🔊OpenAI向ChatGPT Plus用户推出高级语音模式 - 只给一小部分Plus用户推送,全部Plus用户要等到秋季 - 被选中的Alpha 测试的用户将收到一封包含说明的电子邮件,并在其移动应用中收到一条消息。 - 同时视频和屏幕共享功能继续推出&#xff…

【论文速读】| MoRSE:利用检索增强生成技术填补网络安全专业知识的空白

本次分享论文:MoRSE: Bridging the Gap in Cybersecurity Expertise with Retrieval Augmented Generation 基本信息 原文作者:Marco Simoni, Andrea Saracino, Vinod Puthuvath, Maurco Conti 作者单位:意大利比萨国家研究委员会信息学与…

2024 年最新 windows 操作系统搭建部署 nginx 服务器应用详细教程(更新中)

nginx 服务器概述 Nginx 是一款高性能的 HTTP 和 反向代理 服务器,同时是一个 IMAP / POP3 / SMTP 代理服务器。Nginx 凭借其高性能、稳定性、丰富的功能集、简单的配置和低资源消耗而闻名。 浏览 nginx 官网:https://nginx.org/ Nginx 应用场景 静态…

最新保姆级教程使用WildCard开通Claude3升级ChatGPT4.0(2024.8)

如何使用 WildCard 服务注册 Claude3 随着 Claude3 的震撼发布,最强 AI 模型的桂冠已不再由 GPT-4 独揽。Claude3 推出了三个备受瞩目的模型:Claude 3 Haiku、Claude 3 Sonnet 以及 Claude 3 Opus,每个模型都展现了卓越的性能与特色。其中&a…

【rockyLinux·9.4】安装 java jdk

一、安装 java 1.选择版本 yum list | grep jdk各个版本之间的区别: 2.选择了:java-17-openjdk-devel.x86_64(开发者版本),开始安装 建议安装在 /usr/local 这个目录下,可以创建一个 app 目录来收录它…

如何高情商处世:小李的职场智慧

如何高情商处世:小李的职场智慧 在职场这片大海中,我们都是游泳者,有的人轻松自如,而有的人却挣扎不已。今天,我要和大家分享一个关于如何用高情商处世的故事,它来自于我的侄子小李。 初出茅庐的小李 小…

SAP BW系统表分享第一弹

有时候想要查看BW系统中存在了多少的表时,包含SAP以及自建表,这个时候我们怎么去找呢? 不要慌,BW系统中也有其对应系统表来存储表对应的信息的,存储所有表信息的是DD02V或者DD02VV,我比较推荐使用DD02VV&a…

CSS实现图片边框酷炫效果

一、前言 我们在浏览一些网页时,经常会看到一些好看酷炫的元素边框效果(如下图),那么这些效果是怎么实现的呢?我们知道,一般的边框,要么是实线,要么是虚线(点状&#xf…

python随机选取数据算法

python随机选取数据算法: 使用sample方法 pandas的sample方法是最常用的方法来随机选取DataFrame中的数据。可以通过设置frac参数来指定选取的比例。 代码: import pandas as pd# 创建一个示例DataFrame data {A: range(1, 101),B: range(101, 201) }…

大厂linux面试题攻略四之Linux网络服务(一)

一、Linux网络服务-SSH服务 1.哪些设置能够提升SSH远程管理的安全等级? ssh的登录验证方式 ssh的登录端口和监听设置: 配置文件: /etc/ssh/sshd_config #Port 22 #ssh服务默认监听端口 #ListenAddress 0.0.0.0 #ssh服务…

配置静态IP,解决在虚拟机装Linux没有网络的问题

配置静态IP,解决在虚拟机装Linux没有网络的问题 问题 VMware中的虚拟机有时会随着外部宿主机的IP变化而变化,导致使用起来很麻烦。最直接的就是XShell连接不上,其次就是项目中的配置文件中写了关于虚拟机的ip地址,比如redis mys…

编程小白如何成为大神?大学新生的最佳入门攻略

📢博客主页:https://blog.csdn.net/2301_779549673 📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正! 📢本文由 JohnKi 原创,首发于 CSDN🙉 📢未来很长&#…

【视频讲解】Python用LSTM、Wavenet神经网络、LightGBM预测股价

原文链接:https://tecdat.cn/?p37184 原文出处:拓端数据部落公众号 分析师:Yuyan Ye 在金融科技的浪潮中,量化投资方法以其数据驱动和模型导向的特性,日益成为资本市场分析的重要工具。 特别是,长短期…

2024最全的软件测试面试八股文【附答案+文档】

🍅 点击文末小卡片 ,免费获取软件测试全套资料,资料在手,涨薪更快 前言 最近有很多粉丝问我,有什么方法能够快速提升自己,通过阿里、腾讯、字节跳动、京东等互联网大厂的面试,我觉得短时间提升…