首页 > 系统相关 >7.30(nginx反向代理、nginx负载均衡)

7.30(nginx反向代理、nginx负载均衡)

时间:2024-07-30 19:25:42浏览次数:13  
标签:7.30 git tomcat root 负载 nginx usr local

一、nginx反向代理
1、动态服务器 后端服务器 对标Java服务器
1. 修改index.html文件,并且发布web服务
[root@git ~]# echo "this is java web server" > /usr/local/nginx/html/index.html
[root@git ~]# /usr/local/nginx/sbin/nginx 
[root@git ~]# /usr/local/nginx/sbin/nginx -s reload

2. 使用curl访问当前目录
[root@git ~]# curl git
this is java web server

2、启动静态服务器(代理服务器)
要求使用128主机代理134,当用户访问128时,128不响应,而是134主机响应,使用128主机nginx反向代理134的服务器nginx代理其他服务器时,不需要对方同意,更加方便了模块化操作,如果代理一个服务器,双方都需要同意

1. 启动服务
[root@tomcat ~]# echo "this is static server" > /usr/local/nginx/html/index.html
[root@tomcat ~]# /usr/local/nginx/sbin/nginx -s reload
[root@tomcat ~]# ps -aux | grep nginx

[root@tomcat ~]# curl tomcat
this is static server

[root@tomcat ~]# curl 192.168.8.134
this is java web server

2. 修改配置文件 /usr/local/nginx/conf/nginx.conf
location proxy_pass 协议 域名 端口

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

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

3、设置黑名单和白名单
1. 源码编译安装

[root@allowdeny ~]# scp -r [email protected]:~/nginx-1.26.1.tar.gz ./
[root@allowdeny ~]# yum -y install gcc gcc-c++ pcre-devel openssl-devel

[root@allowdeny ~]# tar -zxvf nginx-1.26.1.tar.gz

[root@allowdeny ~]# cd nginx-1.26.1/

[root@allowdeny 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@allowdeny nginx-1.26.1]# make && make install

[root@allowdeny nginx-1.26.1]# useradd -s /bin/nologin -M nginx
[root@allowdeny nginx-1.26.1]# /usr/local/nginx/sbin/nginx

2. 修改index.html

[root@allowdeny nginx-1.26.1]# echo "you are luckly" > /usr/local/nginx/html/index.html
[root@allowdeny nginx-1.26.1]# curl allowdeny
you are luckly


[root@git ~]# curl 192.168.8.136
you are luckly

[root@tomcat ~]# curl 192.168.8.136
you are luckly

3. 设置除了134主机可以访问,其他主机都不可以访问
server模块中设置  allow允许  deny禁止 可以对ip生效,也可以对网段生效

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

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

[root@git ~]# curl 192.168.8.136
you are luckly

4、错误日志

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

0 directories, 3 files
[root@allowdeny nginx]# cat logs/access.log

二、负载均衡
让每一台主机能够获得相应的压力 

轮询 依次将任务部署给不同的主机 (权重)

staticserver    192.168.8.128
dynamicserver00    192.168.8.134
dynamicserver01    192.168.8.135
dynamicserver02    192.168.8.136
1、启动四台主机 
[root@tomcat ~]# echo "I am static server" > /usr/local/nginx/html/index.html
[root@git ~]# echo "I am d00 server" > /usr/local/nginx/html/index.html
[root@dns ~]# echo "I am d01 server" > /usr/local/nginx/html/index.html
[root@allowdeny ~]# echo "I am d02 server" > /usr/local/nginx/html/index.html

2、在staticserver主机上添加模块(upstream)
常用的状态有:

weight:服务访问的权重,默认是1。
down:表示当前的servel 时不参与负载均衡。
backup:预留的备份机品。当其他所有的非backup机器出现故障或者忙的时候,才会请求backup机器,因此这台机器的压力最轻。
max_fails:在fail_timeout时间内,允许请求最大的失败次数,默认为1。当达到最大失败时,会在fail_timeout时间内不允许再次被选择。,返回proxy_next_upstream模块定义的错误。
fail_timeout:单位为秒,默认是10秒。指定一段时间内,请求经历了max_fails次失败后,该server不能访问的时间(暂停服务的时间)。max_fails可以和fail_timeout-起使用。
注意:当负载调度算法为ip_hash时,后端服务器在负载均衡调度中的状态不能是backup。

1. 轮询
[root@tomcat ~]# vim /usr/local/nginx/conf/nginx.conf

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

刷新

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


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

2. weight 加权
[root@tomcat ~]# vim /usr/local/nginx/conf/nginx.conf     数字越大负担任务越重

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

3. ip_hash
■ 当对后端的多台动态应用服务器做负载均衡时,ip_hash指令能够将某个客户端IP的请求通过哈希算法定位到同一台后端服务器上。
■ 这样,当来自某一个IP的用户在后端Web服务器A上登录后,再访问该站点的其他URL,能保证其访问的还是后端web服务器A。

■ 注意:使用ip_hash指令无法保证后端服务器的负载均衡,可能导致有些后端服务器接收到的请求多,有些后端服务器接受的请求少,而且设置后端服务器权重等方法将不起作用。

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

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

4. least_conn
■ least_conn:最少连接,把请求转发给连接数较少的后端服务器。轮询算法是把请求平均
地转发给各个后端,使它们的负载大致相同;但是,有些请求占用的时间农长,会导致其
所在的后端负载较高。这种情况下,leastconn这种方式就可以达到更好的负载均衡效果。

三、平滑升级
1、查看nginx当前版本 

[root@tomcat ~]# /usr/local/nginx/sbin/nginx -v
nginx version: nginx/1.26.1

2、平滑升级到1.27
1. 服务持续期间对nginx升级

[root@tomcat ~]# wget https://nginx.org/download/nginx-1.27.0.tar.gz

[root@tomcat ~]# tar -zxvf nginx-1.27.1.tar.gz

[root@tomcat ~]# cd nginx-1.27.0/
[root@tomcat nginx-1.27.0]# ./configure --prefix=/usr/loacal/nginx/ --user=nginx --group=nginx --with-http_ssl_module --with-http_stub_status_module --with-http_realip_module --with-stream

[root@tomcat nginx-1.27.0]# make && make install

[root@tomcat nginx-1.27.0]# ls /usr/local/nginx/sbin/

2. 杀 nginx-1.26.1进程
[root@tomcat nginx-1.27.0]# ps -aux | grep nginx
root       1321  0.0  0.2  46172  2040 ?        Ss   09:34   0:00 nginx: master process /usr/local/nginx/sbin/nginx
nginx     11370  0.0  0.1  46600  1932 ?        S    16:35   0:00 nginx: worker process
root      14365  0.0  0.0 112824   980 pts/0    R+   16:39   0:00 grep --color=auto nginx
[root@tomcat nginx-1.27.0]# kill -USR2 1321
[root@tomcat nginx-1.27.0]# kill -WINCH 11370
[root@tomcat nginx-1.27.0]# kill -QUIT 1321
[root@tomcat nginx-1.27.0]# curl -I localhost
HTTP/1.1 200 OK
Server: nginx/1.27.0
Date: Tue, 30 Jul 2024 08:44:10 GMT
Content-Type: text/html
Content-Length: 22
Connection: keep-alive
Last-Modified: Tue, 30 Jul 2024 07:44:21 GMT
ETag: "66a899d5-16"
Accept-Ranges: bytes

 3、安装jdk
tomcat9 可以在jdk8的环境运行
tomcat10 必须在jdk17以上的版本运行
在实际的工作中,不需要这么高的版本,在实训,要求使用最新斑斑
新版本只换骨不换皮,我们使用新版本,为了让大家知道各个程序之间版本依赖管理

配置tomcat 10 运行环境

[root@git ~]# wget https://download.oracle.com/java/22/latest/jdk-22_linux-x64_bin.tar.gz

[root@git ~]# tar -zxvf jdk-22_linux-x64_bin.tar.gz 
[root@git ~]# cd jdk-22.0.2/
[root@git jdk-22.0.2]# cd bin/
[root@git bin]# ls
[root@git ~]# mv jdk-22.0.2/ /usr/local/jdk22/
[root@git ~]# ls /usr/local/jdk22/
[root@git ~]# ls
[root@git ~]# cd /usr/local/jdk22/
[root@git jdk22]# pwd
/usr/local/jdk22
[root@git jdk22]# sed -n '$p' /etc/profile
unset -f pathmunge
[root@git jdk22]# sed -i '$aexport JAVA_HOME=/usr/local/jdk22' /etc/profile

[root@git jdk22]# source /etc/profile
[root@git jdk22]# $JAVA_HOME
-bash: /usr/local/jdk22: 是一个目录

[root@git jdk22]# sed -i '$aPATH=$JAVA_HOME/bin:$PATH' /etc/profile

[root@git jdk22]# sed -n '$p' /etc/profile
PATH=$JAVA_HOME/bin:$PATH
[root@git jdk22]# source /etc/profile
[root@git jdk22]# java -version

[root@dns ~]# wget https://dlcdn.apache.org/tomcat/tomcat-10/v10.1.26/bin/apache-tomcat-10.1.26.tar.gz

标签:7.30,git,tomcat,root,负载,nginx,usr,local
From: https://blog.csdn.net/m0_71589190/article/details/140804436

相关文章

  • 7.30模考总结
    省流:上300了(模考难度不大,橙黄绿蓝)\(7.30\)晴\(T1\)报数游戏Ⅱ题意简述求在一段序列前加入一个最小的正整数,使这个序列的每一个前缀和都为正数。思路:前缀和扫一遍,找最小前缀和,特判为正数的情况。\(code\)#pragmaG++optimize(3,"Ofast","inline")#pragmaG++optim......
  • Nginx搭建文件服务器
    下载Nginx,我这里下载1.26版本 http://nginx.org/download/nginx-1.26.1.zip下载完成后解压出来,进入conf文件夹,找到nginx.conf配置文件,定位到server栏修改如下后保存server{charsetutf-8;#设置支持中文listen80;#监听端口......
  • 7.30 看到别人的历程有感
    看到“会说话的汤姆猫”的制作者创业故事,我深受启发。他们目标明确,清楚自己在技术方面与主流游戏厂商有不小的差距,因此选择了避开竞争激烈的红海市场,另辟蹊径,瞄准了尚未被充分开发的蓝海市场。面对广阔的蓝海市场,他们采取了最快速的研发策略,力求尽快占领市场先机。同时,他们在试......
  • 在Linux系统中使用Nginx部署Vue2项目
    1、打包Vue项目,命令如下:npmrunbuild打包成功后,会生成一个dist目录,dist目录中的所有文件需要上传到服务器上。2、修改dist目录中的index.html(看情况省略此步)主要看css、js等文件的路径,例如以下情形:默认:<linkhref="/js/chunk-vendors.ebc2055a.js"rel="preload"as=......
  • 7.30第三周周二学习总结
    1vj团队5补题(上午)https://vjudge.net/contest/643995题解2cfr950(下午)https://vjudge.net/contest/643996#google_vignette最大公约数非递减序列重点1.思维:删去一个ai时,需要删除ai与前后的公因数,并加上ai-1与ai+1的最大公因数。3cf团队赛6补题(下午)思维转化题意:n个......
  • 使用Nginx Proxy Manager配置Halo的反向代理和申请 SSL 证书
    本文介绍NginxProxyManager配置Halo的反向代理和申请SSL证书,如需要了解Halo2的安装,参考如何在Linux云服务器上通过DockerCompose部署安装Halo,搭建个人博客网站?。目录安装NginxProxyManagerNginxProxyManager安装新建docker-compose.yaml启动NPM配置Halo的反向代理申......
  • nginx配置log文件作用域
    在Nginx中,配置日志文件的作用域通常是通过修改Nginx配置文件来实现的。你可以在http、server或location块中设置access_log和error_log指令来定义日志文件的位置和格式。以下是一个配置示例,展示了如何在Nginx中设置访问日志和错误日志:http{#全局访问日志access_log......
  • 2024.7.30 test
    A有一个数\(n\)和\(m\)种操作,第\(i\)次操作使得\(n\getsn/A_i\),问最多遍历多少个数。\(n\le10^5,m\le10\)。不难发现暴力即可通过。B给定集合\(S\),对于每个\(i\in[1,m]\)你需要求出选择数最多和最少的值使得\(\gcd=i\)。\(n,S_i\le3e5\)。首先对于每个\(i......
  • 在Linux系统中修改Nginx的端口
    1、查找Nginx的安装目录,并进入安装Nginx目录,命令如下:whereisnginx2、编辑conf目录中的nginx.conf文件,修改端口,命令如下:vim./conf/nginx.conf 如上图所示,通过vim编辑文件,按i键可以编辑文件,按Esc键可以退出编辑,编辑完成后需要保存,保存命令如下::wq3、重启Nginx进......
  • playbook+roles安装nginx实战
    基本目录结构host文件夹用于存放主机清单文件hosts文件hosts文件内容如下:(仅供参考)[proxy]node2[web]192.168.xx.xxplaybook-all-roles.yml文件用于指定执行哪个role的文件(命名可以自定义)文件内容如下:(仅供参考)因为roles文件夹下只有nginx一个文件夹,所以-rol......