nginx的应用部署nginx
这里写目录标题
- nginx
- nginx的优点
- 什么是集群
- 常见的集群
- 什么是正向代理、反向代理、透明代理
- 常见的代理技术
- 正向代理
- 反向代理
- 透明代理
- nginx部署
nginx
nginx(发音同enginex)是一款轻量级的Web服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like协议下发行。
nginx作为负载均衡服务器:nginx既可在内部直接支持和PHP程序对外进行服务,也可支持作为HTTP代理服务器对外进行服务。
nginx的优点
高并发连接:官方测试能够支撑5万并发连接,在实际生产环境中跑到2-3万并发连接数
内存消耗少
配置文件非常简单:风格跟程序一样通俗易懂
成本低廉:nginx为开源软件,可以免费使用。
支持Rewrite重写规则:能够根据域名、URL的不同,将HTTP请求分到不同的后端服务器群组
内置的健康检查功能:如果NginxProxy后端的某台Web服务器宕机了,不会影响前端访问
节省带宽:支持GZIP压缩,可以添加浏览器本地缓存的Header头
稳定性高:用于反向代理,宕机的概率微乎其微
模块化设计:模块可以动态编译 外围支持好:文档全,二次开发和模块较多
支持热部署:可以不停机重载配置文件 支持事件驱动、AIO(AsyncIO,异步IO)、mmap(Memory Map,内存映射)等性能优化
什么是集群
集群:
就是一组相互独立的计算机,通过单一的系统模式进行管理,每个集群节点(即集群中的每台计算机)都是运行各自服务的独立服务器。这些服务器之间可以彼此通信,它们作为整体向用户提供一组网络资源,当用户请求集群系统时,集群给用户的感觉就是一个单独的服务器,而实际上用户请求的是一组集群服务器。
简单来讲就是指多台服务器合作做同一件事
举个例子:
像常见的,我们打开谷歌,百度的搜索页面,它们的页面看着很简单,觉得可以很轻松的制作出一样的网页,但实际上,这个页面背后是成百上千台服务器也就是集群协同工作的结果。
常见的集群
负载均衡集群
硬件:F5
软件:nginx、lvs、haproxy、slb
高可用集群
软件: keepalived、heartbeat、slb
高性能集群
什么是正向代理、反向代理、透明代理
常见的代理技术
- 正向代理:Forward Proxy
- 反向代理:Reverse proxy
- 透明代理:Transparent proxy
区别:
- 正向代理代理的对象是客户端,反向代理代理的对象是服务端
正向代理
一般情况下,如果没有特别说明,代理技术
默认说的是正向代理
。正向代理由如下两种场景:
正向代理
是一个位于客户端【User A】
和原始服务器【Origin Server】
之间的代理服务器【Forward Proxy】
,为了从原始服务器
取得内容,客户端
向代理服务器
发送一个请求并指定目标Origin Server
,然后代理服务器
向Origin Server
转交请求并将获得的内容返回给客户端
。
代理服务器可能在内网
也可以在外网
。一般客户端需要特殊的配置才能使用。
作用
客户端【User A】
无法直接访问原始服务器【Origin Server】
- 加速访问
原始服务器【Origin Server】
- Cache作用
- 客户端访问授权
- 隐藏访问者的行踪
软件
- 科学上网工具 shadowsocks
- squid
- trafficserver
反向代理
反向代理
正好与正向代理
相反,对于客户端而言代理服务器
就像是原始服务器
,并且客户端
不需要进行任何特别的设置。
客户端【User A】
向反向代理【Reverse Proxy】
发送请求,接着反向代理
将判断向哪个原始服务器【Origin Server】
转交请求,并将获得的内容返回给客户端。
作用
- 保护和隐藏原始资源服务器
- 负载均衡,CDN实现原理
软件
- nginx
- trafficserver
透明代理
透明代理
将拦截客户端【User A】
发送的请求,拦截后自己代为访问原始服务器【Origin Server】
,获取响应结果后再由透明代理
交给客户端
。一般公司内的上网行为管理软件就是透明代理。透明代理
的客户端
根本不需要知道有代理服务器
的存在。
nginx部署
安装nginx:https://nginx.org/en/download.html
安装nginx
关闭防火墙创建系统用户nginx
[root@zyq ~]#: useradd -r -M -s /sbin/nologin nginx
[root@zyq ~]#: id nginx
uid=991(nginx) gid=991(nginx) groups=991(nginx)安装编译工具
[root@zyq ~]#: yum -y install make gcc gcc-c++安装依赖包
[root@zyq ~]#: yum -y install pcre-devel openssl openssl-devel gd-devel创建日志存放目录
[root@zyq ~]#: mkdir -p /var/log/nginx
[root@zyq ~]#: chown -R nginx.nginx /var/log/nginx下载nginx
[root@zyq ~]#: wget https://nginx.org/download/nginx-1.24.0.tar.gz
--2024-01-15 15:39:30-- https://nginx.org/download/nginx-1.24.0.tar.gz
Resolving nginx.org (nginx.org)... 52.58.199.22, 3.125.197.172, 2a05:d014:edb:5702::6, ...
Connecting to nginx.org (nginx.org)|52.58.199.22|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 1112471 (1.1M) [application/octet-stream]
Saving to: ‘nginx-1.24.0.tar.gz’nginx-1.24.0.tar.gz 100%[=========================>] 1.06M 441KB/s in 2.5s 2024-01-15 15:39:33 (441 KB/s) - ‘nginx-1.24.0.tar.gz’ saved [1112471/1112471][root@zyq ~]#: ls
anaconda-ks.cfg nginx-1.24.0.tar.gz
[root@zyq ~]#:
[root@zyq ~]#: tar xf nginx-1.24.0.tar.gz
[root@zyq ~]#: cd nginx-1.24.0/
[root@zyq nginx-1.24.0]#: ls
auto CHANGES CHANGES.ru conf configure contrib html LICENSE man README src编译安装
[root@zyq nginx-1.24.0]#: ./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-debug \
--with-http_ssl_module \
--with-http_realip_module \
--with-http_image_filter_module \
--with-http_gunzip_module \
--with-http_gzip_static_module \
--with-http_stub_status_module \
--http-log-path=/var/log/nginx/access.log \
--error-log-path=/var/log/nginx/error.log
[root@zyq ~]#: make && make install[root@zyq ~]#: cd /usr/local/
[root@zyq local]#: ls
bin etc games include lib lib64 libexec nginx sbin share src
[root@zyq local]#: ls nginx/
conf html logs sbin配置环境变量
[root@zyq ~]#: echo 'export PATH=/usr/local/nginx/sbin:$PATH' > /etc/profile.d/nginx.sh
[root@zyq ~]#: source /etc/profile.d/nginx.sh
[root@zyq ~]#: which nginx
/usr/local/nginx/sbin/nginx启动nginx
[root@zyq ~]#: nginx
[root@zyq ~]#: ss -antl
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
LISTEN 0 128 0.0.0.0:22 0.0.0.0:*
LISTEN 0 511 0.0.0.0:80 0.0.0.0:*
LISTEN 0 128 [::]:22 [::]:* 服务控制方式,使用nginx命令-t //检查配置文件语法-v //输出nginx的版本-c //指定配置文件的路径-s //发送服务控制信号,可选值有{stop|quit|reopen|reload}设置开机自启
[root@zyq ~]#: cp /usr/lib/systemd/system/sshd.service /usr/lib/systemd/system/nginx.service
[root@zyq ~]#: vim /usr/lib/systemd/system/nginx.service
[root@zyq ~]#: cat /usr/lib/systemd/system/nginx.service
[Unit]
Description=nginx server daemon
After=network.target sshd-keygen.target[Service]
Type=forking
ExecStart=/usr/local/nginx/sbin/nginx
ExecStop=/usr/local/nginx/sbin/nginx -s stop
ExecReload=/bin/kill -HUP $MAINPID[Install]
WantedBy=multi-user.target
[root@zyq ~]#: systemctl daemon-reload
[root@zyq ~]#: systemctl status nginx
○ nginx.service - nginx server daemonLoaded: loaded (/usr/lib/systemd/system/nginx.service; disabled; vendor preset: dis>Active: inactive (dead)[root@zyq ~]#: nginx -s stop
[root@zyq ~]#: ss -antl
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
LISTEN 0 128 0.0.0.0:22 0.0.0.0:*
LISTEN 0 128 [::]:22 [::]:*
[root@zyq ~]#: systemctl enable --now nginx.service
Created symlink /etc/systemd/system/multi-user.target.wants/nginx.service → /usr/lib/systemd/system/nginx.service.
[root@zyq ~]#: ss -antl
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
LISTEN 0 128 0.0.0.0:22 0.0.0.0:*
LISTEN 0 511 0.0.0.0:80 0.0.0.0:*
LISTEN 0 128 [::]:22 [::]:*
相关文章:

nginx的应用部署nginx
这里写目录标题 nginxnginx的优点什么是集群常见的集群什么是正向代理、反向代理、透明代理常见的代理技术正向代理反向代理透明代理 nginx部署 nginx nginx(发音同enginex)是一款轻量级的Web服务器/反向代理服务器及电子邮件(IMAP/POP3&…...

Centos固定静态ip地址
这里我用的是Vmware虚拟机搭建的三台机器 进入 cd /etc/sysconfig/network-scripts然后使用 ip addr命令,查看自己虚拟机的以太网地址。 我这里是ens33 上面的第一个选项是本地环回地址,不用管它 然后查看刚刚进入的network-scripts目录下的文件 找到…...

豆芽机置入语音芯片WTN6040-8S:开启智能生活新篇章,让豆芽制作更便捷有趣
豆芽机的开发背景: 豆芽作为一种营养丰富、味道鲜美的食品,深受广大消费者的喜爱。然而,传统的豆芽生产过程繁琐,需要耗费大量的时间和人力,且存在生产效率低、质量不稳定等问题。随着人们生活节奏的加快和对健康饮食的…...

BLIP2预研笔记
0. 前言 文章是公司内部分享学习写的预研报告,里面有小部分文段是直接从网上借鉴的,侵删 1. 任务和方法历史进化: 在大模型等类似的预训练模型的方式(以包含“预训练阶段”等n阶段训练方式为特色)为主流之前…...
安卓开发问题:安卓Ble出现动态鉴权失败以及扫描设备一直进入不了的问题
问题1描述 1、安卓12需要动态鉴权 // 鉴权函数 requestPermissions(permissionsList.toArray(strings), MyConstants.REQUEST_CODE_PERMISSIONS);但是在鉴权回调函数中如Manifest.permission.BLUETOOTH_SCAN、Manifest.permission.BLUETOOTH_CONNECT一直显示失败&…...

DSP ARM FPGA 实验箱_音频处理_滤波操作教程:3-9 音频信号的滤波实验
一、实验目的 掌握Matlab辅助设计滤波器系数的方法,并实现音频混噪及IIR滤波器滤除,并在LCD上显示音频信号的FFT计算结果。 二、实验原理 音频接口采用的是24.576MHz(读兆赫兹)晶振,实验板上共有3个音频端口&#x…...

Rust多线程交叉打印+Send Sync特征讲解
导航 Rust多线程交叉打印Send Sync特征讲解 一、Rust多线程交叉打印二、Send Sync 特征讲解 Rust多线程交叉打印Send Sync特征讲解 一、Rust多线程交叉打印 先说背景有两个线程,分别为0号线程和1号线线程两个线程交叉打印共享值,并将共享值1当标志为fa…...
C#爬虫爬取某东商品信息
🏆作者:科技、互联网行业优质创作者 🏆专注领域:.Net技术、软件架构、人工智能、数字化转型、DeveloperSharp、微服务、工业互联网、智能制造 🏆欢迎关注我(Net数字智慧化基地),里面…...

【Stylus详解与引入】
文章目录 Stylus详解与引入一、Stylus简介二、Stylus的特性1. 变量2. 嵌套规则3. 混合(Mixins)4. 函数5. 条件语句和循环 三、Stylus的引入与配置1. 安装Stylus和stylus-loader2. 配置Webpack3. 在Vue项目中使用Stylus4. 编译Stylus代码四、Stylus的性能…...
001 登录(md5加密)
文章目录 pom.xmlLoginController.javaUserMapper.javaUser.javaUserServiceImpl.javaUserService.javaMD5Util.javaMD5UtilTest.javaValidatorUtil.javaLoginVo.javaRespBean.javaRespBeanEnum.javaSeckillApplication.javaUserMapper.xmllogin.htmlapplication.yamlsql 传统方…...

Linux学习笔记5---WSL2编译裸机程序并烧录至SD卡
在用WLS进行开发的时候发现在mnt/底下竟然识别不了U盘!!也识别不了SD卡!!那程序不就不能烧录到SD卡上了???那还开发个锤子。 在网上查找了一些相关资料,发现可以通过Win32DiskImager…...

React 第二十九章 React 和 Vue 描述页面的区别
面试题:React 和 Vue 是如何描述 UI 界面的?有一些什么样的区别? 标准且浅显的回答: React 中使用的是 JSX,Vue 中使用的是模板来描述界面 前端领域经过长期的发展,目前有两种主流的描述 UI 的方案…...

Dnspy附加进程调试---代码被优化及无法获取局部变量
代码被优化或者无法获取局部变量的效果图如下: 当你在调试的时候,看到这种情况还是挺恼火的,经过查阅资料后,发现可以这种解决: 参考链接:Making an Image Easier to Debug dnSpy/dnSpy Wiki GitHub 假设…...

Redis---------实现更改数据业务,包括缓存更新,缓存穿透雪崩击穿的处理
三种更新策略 内存淘汰是Redis内存的自动操作,当内存快满了就会触发内存淘汰。超时剔除则是在存储Redis时加上其有限期(expire),有限期一过就会自动删除掉。而主动更新则是自己编写代码去保持更新,所以接下来研究主动更新策略。 主动更新策略…...

蓝牙小车的具体实现
title: 蓝牙小车开发时的一些细节 cover: >- https://tse1-mm.cn.bing.net/th/id/OIP-C.BrSgB91U1MPHGyaaZEqcbwHaEo?w273&h180&c7&r0&o5&dpr1.3&pid1.7 abbrlink: 842d5faf date: tags: #小车基本运动之最重要的—PWM ##1.PWM(Pulse …...
污染修复乙级设计资质中关于设计成果保护的规定
关于污染修复乙级设计资质中设计成果的保护,虽然直接针对该资质的设计成果保护规定可能未在公开资料中有详细阐述,但根据中国知识产权法律体系和行业惯例,设计成果作为智力成果的一部分,主要受以下几个方面的法律保护:…...

##10 卷积神经网络(CNN):深度学习的视觉之眼
文章目录 前言1. CNN的诞生与发展2. CNN的核心概念3. 在PyTorch中构建CNN4. CNN的训练过程5. 应用:使用CNN进行图像分类5. 应用:使用CNN进行时序数据预测代码实例7. 总结与展望前言 在深度学习的领域中,卷积神经网络(CNN)已经成为视觉识别任务的核心技术。自从AlexNet在2…...
Linux下添加自己的服务脚本(service)
systemd服务文件(service file)是用来定义和配置systemd服务的文件,通常以.service为后缀。以下是service文件的详细格式和内容说明: 1 文件路径 /etc/systemd/system(供系统管理员和用户使用)系统服务,开机不需要登录就能运行的程序/usr/lib/systemd/system(供发行版…...

C++:内存管理
C:内存管理 一、C/C内存分布二、C语言中动态内存管理方式:malloc/calloc/realloc/free三、C内存管理方式1.new/delete操作内置类型2.new和delete操作自定义类型 四、operator new与operator delete函数(重点)五、new和delete的实现原理1.内置…...

Veeam - 数据保护和管理解决方案_Windows平台部署备份还原VMware手册
Veeam - - 数据保护和管理解决方案 Veeam Backup & Replication Console Veeam Data Platform Veeam Backup & Replication是一款强大的虚拟机备份、恢复和复制解决方案 安全备份、干净恢复和数据弹性 — 即时交付 在混合云中随时随地管理、控制、备份和恢复您的所有数…...
变量 varablie 声明- Rust 变量 let mut 声明与 C/C++ 变量声明对比分析
一、变量声明设计:let 与 mut 的哲学解析 Rust 采用 let 声明变量并通过 mut 显式标记可变性,这种设计体现了语言的核心哲学。以下是深度解析: 1.1 设计理念剖析 安全优先原则:默认不可变强制开发者明确声明意图 let x 5; …...
day52 ResNet18 CBAM
在深度学习的旅程中,我们不断探索如何提升模型的性能。今天,我将分享我在 ResNet18 模型中插入 CBAM(Convolutional Block Attention Module)模块,并采用分阶段微调策略的实践过程。通过这个过程,我不仅提升…...

DAY 47
三、通道注意力 3.1 通道注意力的定义 # 新增:通道注意力模块(SE模块) class ChannelAttention(nn.Module):"""通道注意力模块(Squeeze-and-Excitation)"""def __init__(self, in_channels, reduction_rat…...
Robots.txt 文件
什么是robots.txt? robots.txt 是一个位于网站根目录下的文本文件(如:https://example.com/robots.txt),它用于指导网络爬虫(如搜索引擎的蜘蛛程序)如何抓取该网站的内容。这个文件遵循 Robots…...
虚拟电厂发展三大趋势:市场化、技术主导、车网互联
市场化:从政策驱动到多元盈利 政策全面赋能 2025年4月,国家发改委、能源局发布《关于加快推进虚拟电厂发展的指导意见》,首次明确虚拟电厂为“独立市场主体”,提出硬性目标:2027年全国调节能力≥2000万千瓦࿰…...
Caliper 配置文件解析:fisco-bcos.json
config.yaml 文件 config.yaml 是 Caliper 的主配置文件,通常包含以下内容: test:name: fisco-bcos-test # 测试名称description: Performance test of FISCO-BCOS # 测试描述workers:type: local # 工作进程类型number: 5 # 工作进程数量monitor:type: - docker- pro…...

MyBatis中关于缓存的理解
MyBatis缓存 MyBatis系统当中默认定义两级缓存:一级缓存、二级缓存 默认情况下,只有一级缓存开启(sqlSession级别的缓存)二级缓存需要手动开启配置,需要局域namespace级别的缓存 一级缓存(本地缓存&#…...
深度剖析 DeepSeek 开源模型部署与应用:策略、权衡与未来走向
在人工智能技术呈指数级发展的当下,大模型已然成为推动各行业变革的核心驱动力。DeepSeek 开源模型以其卓越的性能和灵活的开源特性,吸引了众多企业与开发者的目光。如何高效且合理地部署与运用 DeepSeek 模型,成为释放其巨大潜力的关键所在&…...
Pydantic + Function Calling的结合
1、Pydantic Pydantic 是一个 Python 库,用于数据验证和设置管理,通过 Python 类型注解强制执行数据类型。它广泛用于 API 开发(如 FastAPI)、配置管理和数据解析,核心功能包括: 数据验证:通过…...

动态规划-1035.不相交的线-力扣(LeetCode)
一、题目解析 光看题目要求和例图,感觉这题好麻烦,直线不能相交啊,每个数字只属于一条连线啊等等,但我们结合题目所给的信息和例图的内容,这不就是最长公共子序列吗?,我们把最长公共子序列连线起…...