nginx续1:
八、虚拟主机配置
基于域名的虚拟主机
[root@server2 ~]# ps -au|grep nginx //查看进程
修改Nginx服务配置,添加相关虚拟主机配置如下
1. [root@proxy ~]# vim /usr/local/nginx/conf/nginx.conf
2. .. ..
3. server {
4. listen 80; //端口
5. server_name www.a.com; //域名
6. auth_basic "Input Password:"; //认证提示符
7. auth_basic_user_file "/usr/local/nginx/pass"; //认证密码文件
8. location / {
9. root html; //指定网站根路径
10. index index.html index.htm;
11. }
12.
13. }
14. … …
15.
16. server {
17. listen 80; //端口
18. server_name www.b.com; //域名
19. location / {
20. root web; //指定网站根路径
21. index index.html index.htm;
22. }
[root@localhost ~]# mkdir /usr/local/nginx/web //创建网页根目录
[root@localhost ~]# echo "web" > /usr/local/nginx/web/index.html //写测试页面
[root@localhost ~]# /usr/local/nginx/sbin/nginx -s reload //重新加载
客户机测试:
[root@localhost ~]# vim /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.1.134 www.a.com www.b.com
九、nginx反向代理配置
⽤户直接访问反向代理服务器就可以获得⽬标服务器(后端服务器)的资源。
1、修改配置
在配置⽂件中添加⼀⾏反向代理块指令(proxy_pass),表示当访问本机地址 192.168.1.125的 80 端⼝时即可跳转到后端服务器 192.168.1.100 的 80 端⼝上。
[root@server2 ~]# vim /usr/local/nginx/conf/nginx.conf
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root html;
index index.html index.htm;
proxy_pass http://192.168.1.100:80;
}
[root@server2 ~]# /usr/local/nginx/sbin/nginx -s reload
2、建立后端服务器
去server1:
也安装了nginx
[root@server1 ~]# vim /usr/local/nginx/html/index.html
这里是192.168.1.100
3、访问测试
浏览器测试,输入server2的地址192.168.1.125

十、nginx访问IP黑名单
1、修改配置
[root@server2 ~]# vim /usr/local/nginx/conf/nginx.conf
server {
listen 80;
server_name localhost;
allow 192.168.1.225; //允许192.168.1.225用户访问
deny 192.168.1.0/24; //拒绝1.0网段的用户访问
deny all; //拒绝所有,哪条在前哪条优先级高
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root html;
index index.html index.htm;
proxy_pass http://192.168.1.100:80;
}
[root@server2 ~]# /usr/local/nginx/sbin/nginx -s reload
2、真机浏览器访问
因为当前服务器拒绝了 1.0 ⽹段的⽤户访问,⽽本机浏览器正是通过 1.254 ⽹关与服务器建⽴连接,所以浏览器被拒绝访问了,显示 403 错误信息。
3、另找一台虚拟机(192.168.1.225)访问
[root@web ~]# curl 192.168.1.125
我是192.168.1.100 //访问成功
十一、负载均衡
1、环境准备
四台虚拟机都安装了nginx
staticserver ip 192.168.1.250
server1 ip 192.168.1.100
server2 ip 192.168.1.125
server3 ip 192.168.1.225
写一下测试页面,便于区分
[root@staticserver ~]# echo "I am static server" > /usr/local/nginx/html/index.html
[root@server1 ~]# echo "I am server1" > /usr/local/nginx/html/index.html
[root@server2 ~]# echo "I am server2" > /usr/local/nginx/html/index.html
[root@server3 ~]# echo "I am server3" > /usr/local/nginx/html/index.html
2、配置,在staticserver里
[root@staticserver ~]# vim /usr/local/nginx/conf/nginx.conf
upstream servers { //#upstream模块要写到http的里面
server 192.168.1.100:80;
server 192.168.1.125:80;
server 192.168.1.225:80;
}
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
# root html;
# index index.html index.htm;
proxy_pass http://servers; #通过proxy_pass将用户的请求转发给servers集群,他的语句优先级高于root,所以放root前面和后面都可以
[root@staticserver ~]# /usr/local/nginx/sbin/nginx -s reload

3、访问测试
真机浏览器访问staticserverIP192.168.1.250,可以看到另外三台主机的页面,点击刷新即可
4、配置upstream服务器集群池属性
1)七层负载均衡基础配置

2)负载均衡状态

在服务器组的组内服务器后填写该服务器的状态,如:
3)负载均衡策略
(1)轮询

(2)weight 加权

(3)ip_hash
当对后端的多台动态应用服务器做负载均衡时,ip_hash指令能够将某个客户端IP的请求通过哈希算法定位到同一台后端服务器上。
这样,当来自某一个IP的用户在后端Web服务器A上登录后,再访问该站点的其他URL,能保证其访问的还是后端web服务器A。
注意: 使用ip_hash指令无法保证后端服务器的负载均衡,可能导致有些后端服务器接收到的请求多,有些后端服务器接受的请求少,而且设置后端服务器权重等方法将不起作用。

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

(5)url_hash
按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,要配合缓存命中来使用。同一个资源多次请求,可能会到达不同的服务器上,导致不必要的多次下载,缓存命中率不高,以及一些资源时间的浪费。而使用ur_hash,可以使得同一个url (也就是同一个资源请求)会到达同一台服务器,一旦缓存住了资源,再次收到请求,就可以从缓存中读取。

十二、平滑升级(不停止服务的情况下)
[root@server1 ~]# /usr/local/nginx/sbin/nginx //先保证原有服务使启动的
[root@server1 ~]# wget https://nginx.org/download/nginx-1.27.0.tar.gz //下载新版本
[root@server1 ~]# tar -zxvf nginx-1.27.0.tar.gz //解压
[root@server1 nginx-1.27.0]# cd nginx-1.27.0/
[root@server1 nginx-1.27.0]# ./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@server1 nginx-1.27.0]# make && make install
[root@server1 nginx-1.27.0]# ls /usr/local/nginx/sbin/
nginx nginx.old
[root@server1 nginx-1.27.0]# /usr/local/nginx/sbin/nginx -v //查看版本
nginx version: nginx/1.27.0
[root@server1 nginx-1.27.0]# /usr/local/nginx/sbin/nginx.old -v //旧版本
nginx version: nginx/1.26.1
[root@server1 nginx-1.27.0]# ps -aux|grep nginx //查看进程,找到老版本pid编号
root 7838 0.0 0.2 46096 1144 ? Ss 13:40 0:00 nginx: master process ./sbin/nginx
nginx 7839 0.0 0.4 46544 2152 ? S 13:40 0:00 nginx: worker process
root 10940 0.0 0.2 112720 968 pts/2 R+ 16:34 0:00 grep --color=auto nginx
[root@server1 nginx-1.27.0]# kill -USR2 7838 //使用kill -USR2 启用新版本的Nginx的软件,7838是老版本的pid编号
[root@server1 nginx-1.27.0]# ps -aux|grep nginx
root 7838 0.0 0.2 46096 1332 ? Ss 13:40 0:00 nginx: master process ./sbin/nginx
nginx 7839 0.0 0.4 46544 2152 ? S 13:40 0:00 nginx: worker process
root 10941 0.0 0.6 46096 3324 ? S 16:37 0:00 nginx: master process ./sbin/nginx
nginx 10942 0.0 0.3 46548 1916 ? S 16:37 0:00 nginx: worker process
root 10944 0.0 0.2 112720 964 pts/2 R+ 16:37 0:00 grep --color=auto nginx
[root@server1 nginx-1.27.0]# kill -WINCH 7839 //优雅关闭子进程
[root@server1 nginx-1.27.0]# ps -aux|grep nginx
root 7838 0.0 0.2 46096 1332 ? Ss 13:40 0:00 nginx: master process ./sbin/nginx
root 10941 0.0 0.6 46096 3324 ? S 16:37 0:00 nginx: master process ./sbin/nginx
nginx 10942 0.0 0.3 46548 1916 ? S 16:37 0:00 nginx: worker process
nginx 10947 0.0 0.3 46544 1908 ? S 16:39 0:00 nginx: worker process
root 10949 0.0 0.2 112720 964 pts/2 R+ 16:39 0:00 grep --color=auto nginx
[root@server1 nginx-1.27.0]# kill -QUIT 7838 //优雅关闭主进程
[root@server1 nginx-1.27.0]# ps -aux|grep nginx
root 10941 0.0 0.6 46096 3324 ? S 16:37 0:00 nginx: master process ./sbin/nginx
nginx 10942 0.0 0.3 46548 1916 ? S 16:37 0:00 nginx: worker process
root 10953 0.0 0.2 112720 968 pts/2 R+ 16:40 0:00 grep --color=auto nginx
[root@server1 nginx-1.27.0]# curl -I localhost //使用curl 查看当前服务器的版本
HTTP/1.1 200 OK
Server: nginx/1.27.0 //已经更新成1.27版本了
Date: Tue, 30 Jul 2024 08:41:05 GMT
Content-Type: text/html; charset=utf-8
Content-Length: 13
Last-Modified: Tue, 30 Jul 2024 07:02:16 GMT
Connection: keep-alive
ETag: "66a88ff8-d"
Accept-Ranges: bytes
十三、nginx代理tomcat10
配置tomcat10 运行环境 tomcat9可以在jdk8的环境运行
tomcat10必须在jdk17以上的版本运行
1、jdk环境
[root@server1 ~]# tar -xf jdk-22_linux-x64_bin.tar.gz
[root@server1 ~]# mv jdk-22.0.1/ /usr/local/jdk //把解压后的文件移动到/usr/local/jdk/方便管理配置
[root@server1 ~]# cd /usr/local/jdk/
[root@server1 jdk]# sed -i '$aexport JAVA_HOME=/usr/local/jdk/' /etc/profile
[root@server1 jdk]# sed -i '$aPATH=$JAVA_HOME/bin:$PATH' /etc/profile
[root@server1 jdk]# source /etc/profile //使配置文件生效
[root@server1 jdk]# java -version //查看版本
java version "22.0.1" 2024-04-16
Java(TM) SE Runtime Environment (build 22.0.1+8-16)
Java HotSpot(TM) 64-Bit Server VM (build 22.0.1+8-16, mixed mode, sharing)
2、安装tomcat10
[root@server1 ~]# tar -zxvf apache-tomcat-10.1.25.tar.gz //解压tomcat
[root@server1 ~]# mv apache-tomcat-10.1.25 /usr/local/tomcat/ //移动,方便管理
[root@server1 ~]# cd /usr/local/tomcat/
[root@server1 tomcat]# ls
[root@server1 tomcat]# /usr/local/tomcat/bin/startup.sh //启动
[root@server1 tomcat]# netstat -lnput|grep java
tcp6 0 0 127.0.0.1:8005 :::* LISTEN 2306/java
tcp6 1 0 :::8080 :::* LISTEN 2336/java //代表启动成功
[root@server1 tomcat]# cd /usr/local/tomcat/logs //日志文件
[root@server1 logs]# ls
[root@server1 logs]# tail -f catalina.2024-08-01.log //查看
[root@server1 logs]# /usr/local/tomcat/bin/shutdown.sh //停用
[root@server1 logs]# cd ..
[root@server1 tomcat]# cd webapps/
[root@server1 webapps]# ls //每个目录就是一个项目
docs examples host-manager manager ROOT //ROOT就是默认网页,使用192.168.1.100:8080直接访问的页面就是ROOT目录下的index.jsp,在实际开发中,我们可以将目录名称改为ROOT就可以直接发布
测试:
[root@server1 webapps]# mkdir /usr//local/tomcat/webapps/myweb
[root@server1 webapps]# vim /usr//local/tomcat/webapps/myweb/a.jsp
i am jsp
i am jsp
<%=3+4 %>

3、再准备这样的两台server2,server3
server1
[root@server1 ~]# echo "i am 1" > /usr/local/tomcat/webapps/ROOT/index.jsp
server2
[root@server2 ~]# echo "i am 2" > /usr/local/tomcat/webapps/ROOT/index.jsp
server3
[root@server2 ~]# echo "i am 3" > /usr/local/tomcat/webapps/ROOT/index.jsp
4、准备一台nginx服务器
[root@staticserver ~]# cd /usr/local/nginx/
[root@staticserver nginx]# ls
client_body_temp conf fastcgi_temp html logs proxy_temp sbin scgi_temp uwsgi_temp
[root@staticserver nginx]# mkdir conf.d
[root@staticserver nginx]# vim conf.d/eleme.conf
server{
listen 80;
server_name www.eleme.com;
root /eleme;
location / {
proxy_pass elgroup;
}
}
[root@staticserver nginx]# vim /usr/local/nginx/conf/nginx.conf
upstream elgroup {
server 192.168.1.100:8080;
server 192.168.1.125:8080;
server 192.168.1.225:8080;
}
include /usr/local/nginx/conf.d/*.conf;
[root@staticserver nginx]# /usr/local/nginx/sbin/nginx -s reload
[root@staticserver nginx]# vim /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.1.250 www.eleme.com
浏览器访问测试:www.eleme.com,刷新即可看到页面轮询效果



相关文章:
nginx续1:
八、虚拟主机配置 基于域名的虚拟主机 [rootserver2 ~]# ps -au|grep nginx //查看进程 修改Nginx服务配置,添加相关虚拟主机配置如下 1. [rootproxy ~]# vim /usr/local/nginx/conf/nginx.conf 2. .. .. 3. server { 4. listen …...
循环队列和阻塞有什么关系?和生产者消费者模型又有什么关系?阻塞队列和异步日志又有什么关系
### 循环队列和阻塞队列 #### 循环队列 - **定义**: 一个固定大小的数组,通过两个指针(front 和 back)管理队列的头部和尾部元素。 - **特点**: - **循环性**: 当指针到达数组的末尾时,可以回绕到数组的开头,从而利…...
物理笔记-八年级上册
0.梦开始的地方 物理研究什么? 电学,力学,声学,光学,热学。 1.1.1长度的单位 国际基本单位制 单位转换 魔法记忆:千米-米-毫米-微米-纳米(进率都是1000) 单位换算计算方法 用科学…...
QT键盘和鼠标事件
这些事件都在QWidget 中的保护成员方法中 都是虚函数在头文件中声明了 需要类外重现实现 如果头文件中声明 类外无实现就会报错 void Widget::keyPressEvent(QKeyEvent *event) {switch (event->key()) {//获取按键case Qt::Key_W://按键wqDebug()<<"按下w"…...
文件Io编程基础
1. 标准I/O (stdio.h) stdio.h 是标准C库的头文件,包含了输入输出函数的声明。位置:/usr/include/stdio.h 2. 文件I/O操作步骤 打开文件: 使用 fopen 函数,返回 FILE* 指针。读/写操作: 使用 fread、fwrite、fgets、fputs、fprintf、fscan…...
本地项目提交到Gitee
在项目目录 右键 git bash here 可以在黑屏输入命令 也可以在项目里面 命令都是一样的 要排除哪些 git add . 添加所有文件 git commit -m "Initial commit" 提交到本地 git remote add origin https://gitee.com/xxxx/xxxx.git 添加远程仓库 …...
有了谷歌账号在登录游戏或者新APP、新设备时,要求在手机上点击通知和数字,怎么办?
有的朋友可能遇到过,自己注册或购买了谷歌账号以后,在自己的手机上可以正常登录,也完成了相关的设置,看起来一切都很完美,可以愉快地玩耍了。 但是,随后要登录一个游戏的时候(或者登录一个新的…...
rsyslog如何配置日志轮转
以下是在 Linux 系统中配置 rsyslog 日志轮转策略的一般步骤: 编辑 rsyslog 的配置文件,通常为 /etc/rsyslog.conf 或 /etc/rsyslog.d/*.conf 。 在配置文件中添加类似以下的日志轮转配置示例: $template myLogs,"/var/log/mylog-%Y%m%d…...
LLM推理入门实践:基于 Hugging Face Transformers 和 Qwen2模型 进行文本问答
文章目录 1. HuggingFace模型下载2. 模型推理:文本问答 1. HuggingFace模型下载 模型在 HuggingFace 下载,如果下载速度太慢,可以在 HuggingFace镜像网站 或 ModelScope 进行下载。 使用HuggingFace的下载命令(需要先注册Huggin…...
python:YOLO格式数据集图片和标注信息查看器
作者:CSDN _养乐多_ 本文将介绍如何实现一个可视化图片和标签信息的查看器,代码使用python实现。点击下一张和上一张可以切换图片。 文章目录 一、脚本界面二、完整代码 一、脚本界面 界面如下图所示, 二、完整代码 使用代码时࿰…...
AGI思考探究的意义、价值与乐趣 Ⅴ
搞清楚模型对知识或模式的学习与迁移对于泛化意味什么,或者说两者间的本质?相信大家对泛化性作为大语言模型LLM的突出能力已经非常了解了 - 这也是当前LLM体现出令人惊叹的通用与涌现能力的基础前提,这里不再过多赘述,但仍希望大家…...
c++: mangle命名规则
其实可用根据binutils/c++filt的源代码看。找到mangle的命名规则, 但是从网上找到了一个总结,但是github有时候上不去,摘录再次。 https://github.com/gchatelet/gcc_cpp_mangling_documentation https://itanium-cxx-abi.github.io/cxx-abi/abi.html#mangling 举例: _ZN8…...
系统化学习 H264视频编码(05)码流数据及相关概念解读
说明:我们参考黄金圈学习法(什么是黄金圈法则?->模型 黄金圈法则,本文使用:why-what)来学习音H264视频编码。本系列文章侧重于理解视频编码的知识体系和实践方法,理论方面会更多地讲清楚 音视频中概念的…...
【VMware】如何演示使用U盘在VMware虚拟机上安装Windows11
一、前置准备 在开始使用U盘演示在VMware虚拟机上装Windows11前,我们需要做以下前置的准备: 已制作好的Windows引导盘;WMware软件 如何制作Windows引导盘? 推荐参考: 【建议收藏】2024年最新Windows系统重装教程&…...
HanLP和Jieba区别
HanLP和Jieba都是中文分词工具,但它们在多个方面存在区别。以下是对两者区别的详细分析: 一、开发背景与语言支持 HanLP:由大连理工大学自然语言处理与社会人文计算实验室开发,是一个开源的自然语言处理工具包。它主要使用Java语…...
荒原之梦考研:考研二战会很难吗?
考研二战是不是很难,其实很大程度上取决于我们自己,我们能否认清自己的优势,能否指定和执行合理的计划,有没有强大的心理支撑等,都是决定考研二战能否成功,或者能否比较轻松的成功的关键。 在本文中&#…...
【Git企业级开发实战指南①】Git安装、基本操作!
目录 一、Git是什么?1.1特点1.2功能1.3基本概念 二、Git安装2.1Ubuntu下安装2.2Centos下安装Git 三、Git基本操作3.1创建git本地仓库3.2配置Git3.3 工作区&暂存区&版本库3.4 实操案例3.4.1添加文件 3.5 修改文件3.6版本回退3.7查看历史操作日志3.7撤销修改3…...
Leetcode 3239. Minimum Number of Flips to Make Binary Grid Palindromic I
Leetcode 3239. Minimum Number of Flips to Make Binary Grid Palindromic I 1. 解题思路2. 代码实现 题目链接:3239. Minimum Number of Flips to Make Binary Grid Palindromic I 1. 解题思路 这一题思路上的话就是分别考察一下把所有行都变成回文所需要的fli…...
C++面试基础算法的简要介绍
C是一种广泛使用的编程语言,尤其在算法和数据结构的实现中占据重要地位。以下是对C基础算法的一些介绍,涵盖了排序、查找、搜索算法以及基本的遍历算法等方面。 排序算法 快速排序(Quick Sort) 快速排序是一种分而治之的排序算法…...
【Linux网络编程】套接字Socket(UDP)
网络编程基础概念: ip地址和端口号 ip地址是网络协议地址(4字节32位,形式:xxx.xxx.xxx.xxx xxx在范围[0, 255]内),是IP协议提供的一种统一的地址格式,每台主机的ip地址不同,一个…...
华为云AI开发平台ModelArts
华为云ModelArts:重塑AI开发流程的“智能引擎”与“创新加速器”! 在人工智能浪潮席卷全球的2025年,企业拥抱AI的意愿空前高涨,但技术门槛高、流程复杂、资源投入巨大的现实,却让许多创新构想止步于实验室。数据科学家…...
云启出海,智联未来|阿里云网络「企业出海」系列客户沙龙上海站圆满落地
借阿里云中企出海大会的东风,以**「云启出海,智联未来|打造安全可靠的出海云网络引擎」为主题的阿里云企业出海客户沙龙云网络&安全专场于5.28日下午在上海顺利举办,现场吸引了来自携程、小红书、米哈游、哔哩哔哩、波克城市、…...
为什么需要建设工程项目管理?工程项目管理有哪些亮点功能?
在建筑行业,项目管理的重要性不言而喻。随着工程规模的扩大、技术复杂度的提升,传统的管理模式已经难以满足现代工程的需求。过去,许多企业依赖手工记录、口头沟通和分散的信息管理,导致效率低下、成本失控、风险频发。例如&#…...
2025盘古石杯决赛【手机取证】
前言 第三届盘古石杯国际电子数据取证大赛决赛 最后一题没有解出来,实在找不到,希望有大佬教一下我。 还有就会议时间,我感觉不是图片时间,因为在电脑看到是其他时间用老会议系统开的会。 手机取证 1、分析鸿蒙手机检材&#x…...
Spring AI与Spring Modulith核心技术解析
Spring AI核心架构解析 Spring AI(https://spring.io/projects/spring-ai)作为Spring生态中的AI集成框架,其核心设计理念是通过模块化架构降低AI应用的开发复杂度。与Python生态中的LangChain/LlamaIndex等工具类似,但特别为多语…...
九天毕昇深度学习平台 | 如何安装库?
pip install 库名 -i https://pypi.tuna.tsinghua.edu.cn/simple --user 举个例子: 报错 ModuleNotFoundError: No module named torch 那么我需要安装 torch pip install torch -i https://pypi.tuna.tsinghua.edu.cn/simple --user pip install 库名&#x…...
前端中slice和splic的区别
1. slice slice 用于从数组中提取一部分元素,返回一个新的数组。 特点: 不修改原数组:slice 不会改变原数组,而是返回一个新的数组。提取数组的部分:slice 会根据指定的开始索引和结束索引提取数组的一部分。不包含…...
【Linux】Linux安装并配置RabbitMQ
目录 1. 安装 Erlang 2. 安装 RabbitMQ 2.1.添加 RabbitMQ 仓库 2.2.安装 RabbitMQ 3.配置 3.1.启动和管理服务 4. 访问管理界面 5.安装问题 6.修改密码 7.修改端口 7.1.找到文件 7.2.修改文件 1. 安装 Erlang 由于 RabbitMQ 是用 Erlang 编写的,需要先安…...
从实验室到产业:IndexTTS 在六大核心场景的落地实践
一、内容创作:重构数字内容生产范式 在短视频创作领域,IndexTTS 的语音克隆技术彻底改变了配音流程。B 站 UP 主通过 5 秒参考音频即可克隆出郭老师音色,生成的 “各位吴彦祖们大家好” 语音相似度达 97%,单条视频播放量突破百万…...
2025-05-08-deepseek本地化部署
title: 2025-05-08-deepseek 本地化部署 tags: 深度学习 程序开发 2025-05-08-deepseek 本地化部署 参考博客 本地部署 DeepSeek:小白也能轻松搞定! 如何给本地部署的 DeepSeek 投喂数据,让他更懂你 [实验目的]:理解系统架构与原…...

