Linux:Nginx服务与搭建

news2024/12/23 1:22:42

目录

一、Nginx概述

二、Nginx三大作用:反向代理、负载均衡、动静分离

三、Nginx和Apache

3.1Nginx和Apache的差异 

3.2Nginx和Apache的优缺点比较

四、编译安装niginx

五、创建Nginx 自启动文件 

 六、Nginx的信号使用

6.1信号

七、升级 nginx1.18 nginx1.20


一、Nginx概述

Nginx概述

  • 一款高新能、轻量级Web服务软件
  • 稳定性高
  • 系统资源消耗低
  • 对HTTP并发连接的处理能力高
  • 单台物理服务器可支持30 000~50 000个并发请求。

Nginx 功能介绍

  • 静态的web资源服务器html,图片,js,css,txt等静态资源

  • http/https协议的反向代理 7层

  • 结合FastCGI/uWSGI/SCGI等协议反向代理动态资源请求

  • tcp/udp协议的请求转发(反向代理) 4层

基础特性

  • 模块化设计,较好的扩展性

  • 高可靠性

  • 支持热部署:不停机更新配置文件,升级版本,更换日志文件

  • 低内存消耗:10000个keep-alive连接模式下的非活动连接,仅需2.5M内存

  • event-driven,aio,mmap,sendfile

Web 服务相关的功能

  • 虚拟主机(server)

  • 支持 keep-alive 和管道连接(利用一个连接做多次请求)

  • 访问日志(支持基于日志缓冲提高其性能)

  • url rewirte

  • 路径别名

  • 基于IP及用户的访问控制

  • 支持速率限制及并发数限制

  • 重新配置和在线升级而无须中断客户的工作进程

二、Nginx三大作用:反向代理、负载均衡、动静分离

反向代理:

在服务端 配置,客户端 访问服务器A ,服务器A 为代理服务器 ,将客户服务再转发到服务器B 

作用:缓存,将服务器的响应缓存在自己的内存中,减少服务器压力;

           负载均衡,将用户请求分配给多个服务器;

           访问控制;

正向代理

在客户端 配置,配置完了再去访问具体服务,即代理服务器 代理了客户端 ,再去和目标服务器 进行交互

 作用:提高访问速度

            隐藏客户端真实IP地址

负载均衡:分摊到多个操作单元上进行执行,例如Web服务器、FTP服务器、企业关键应用服务器和其它关键任务服务器等,从而共同完成工作任务

三、Nginx和Apache

3.1Nginx和Apache的差异 

  • 轻量级,Nginxt比Apache占用更少的内存及资源:
  • 静态处理,Nginx静态处理性能比Apache高;
  • Nginx可以实现无缓存的反向代理加速,提高网站运行速度;
  • Nginx支持热部署,启动速度迅速,可以在不间断服务的情况下,对软件版本或者配置进行升级;
  • Nginx高度模块化,编写模块相对简单,且组件比Apache少;
  • 高并发下Nginx能保持低资源低消耗高性能;
  • Nginx是异步进程,多个连接可以对应一个进程;Apache是同步多进程,一个连接对应一个进程;
  • Nginx的性能和可伸缩性不依赖于硬件,Apache依赖于硬件;
  • Nginx配置简洁,Apache配置复杂。

3.2Nginx和Apache的优缺点比较

nginx相对于apache的优点∶

轻量级,同样起web服务,比Apache占用更少的内存及资源。
高并发,Nginx处理请求是异步非阻塞的,而Apache是阻塞型的在高并发下,Nginx能保持低资源低消耗高性能。
高度模块化的设计。
编写模块相对简。
社区活跃,各种高性能模块出品速度
apache相对于nginx的优点∶

rewrite比nginx的rewrite强大
模块多,基本想到的都可以找到
少bug, Nginx的bug相对较超稳定


四、编译安装niginx

安装依赖包

yum -y install gcc pcre-devel openssl-devel zlib-devel openssl  openssl-devel

下载安装包

nginx安装官网:https://nginx.org/en/download.html

wget http://nginx.org/download/nginx-1.18.0.tar.gz

 新建运行用户、组

 编译安装nginx

tar xf nginx-1.18.0.tar.gz 
cd nginx-1.18.0/
mkdir /apps/nginx -p
 
./configure --prefix=/apps/nginx \
--user=nginx \
--group=nginx \
--with-http_ssl_module \
--with-http_v2_module \
--with-http_realip_module \
--with-http_stub_status_module \
--with-http_gzip_static_module \
--with-pcre \
--with-stream \
--with-stream_ssl_module \
--with-stream_realip_module
 
 
make -j2 && make install
 
chown -R nginx.nginx /apps/nginx

 创建软连接后直接 nginx启动

ln -s /apps/nginx/sbin/nginx /usr/sbin/

 

五、创建Nginx 自启动文件 

vim /usr/lib/systemd/system/nginx.service
 
[Unit]
Description=nginx - high performance web server
Documentation=http://nginx.org/en/docs/
After=network-online.target remote-fs.target nss-lookup.target
Wants=network-online.target
[Service]
Type=forking
PIDFile=/apps/nginx/logs/nginx.pid
ExecStart=/apps/nginx/sbin/nginx -c /apps/nginx/conf/nginx.conf
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s TERM $MAINPID
[Install]
WantedBy=multi-user.target

 

 重新加载配置、设置开机自启并开启服务

  1. systemctl daemon-reload               重新加载配置

  2. systemctl enable --now nginx         设置开机自起

  3. systemctl status nginx.service        查看服务状态

 若出现

问题其一(1) 如果卡主是应为logs下有 nginx.pid  文件  删除即可

问题其二(2)检查80端口是否被占用

 六、Nginx的信号使用

6.1信号

nginx 命令支持向其发送信号,实现不同功能

nginx 当做单独命令使用有以下选项

信号意义
nginx -v显示版本
显示编译详细情况、模块等信息
检查语法格式
打印当前配置
发送信号
立即关闭
优雅退出,不影响业务
重新加载配置文件
分割日制
优雅升级

信号意义
nginx -v显示版本
nginx -V显示编译详细情况、模块等信息
nginx -t检查语法格式
nginx -T打印当前配置
nginx -s发送信号
nginx -s stop立即关闭
nginx -s quit优雅退出,不影响业务
nginx -s reload重新加载配置文件
nginx -s  USR1分割日制
nginx -s  USR2优雅升级
nginx -g 'user lisi;’以lisi身份运行,默认是以nginx身份
nginx -g 'daemon off;'前台运行命令

七、升级 nginx1.18 nginx1.20

  1. 将旧Nginx文件换成新Nginx文件(注意备份)

  2. 向master进程发送USR2信号

  3. master进程修改pid文件名,加后缀.oldbin

  4. master进程用新Nginx文件启动新master进程,系统中将有新旧两个Nginx主进程共同提供Web服务

  5. 向旧的Nginx服务进程发送WINCH信号,使旧的Nginx worker进程平滑停止,并删除Nginx.pid.oldbin文件

  6. 向旧master进程发送QUIT信号,关闭老master

  7. 如果发现升级有问题,可以回滚向老master发送HUP,向新master发送QUIT

 

 

 添加新模块

 

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

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

相关文章

java 里面 long 转换int内存分析

了解补码知识点 要将补码转换为十进制,需要确定补码的符号位。如果补码的符号位为1,则表示为负数,否则表示为正数。 假设我们有一个补码为1 0110 1011 1100 1101 1000 0011 1101 1100 0010 1101 1111 1101 1100 0001 1100 0011 0100 首先&a…

无涯教程-进程 - 组会话控制

在本章中,我们将熟悉进程组,会话和作业控制。 进程组(Process Groups ) - 进程组是一个或多个进程的集合,一个进程组由一个或多个共享相同进程组标识符(PGID)的进程组成。 会话(Sessions) - 它是各种进程组的集合。…

软考A计划-系统集成项目管理工程师-项目风险管理-下

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例点击跳转>软考全系列点击跳转>蓝桥系列 👉关于作者 专注于Android/Unity和各种游…

开源哲学:自由、共享与合作

🌷🍁 博主猫头虎 带您 Go to New World.✨🍁 🦄 博客首页——猫头虎的博客🎐 🐳《面试题大全专栏》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺 &a…

Spark最后一课

1.Spark的提交过程(YarnCluster) 1.命令输入脚本启动,启动submit任务 2.解析参数 看是cluster还是yarn单点模式 3.创建客户端YarnClusterApplication 4.封装提交命令交给RM 5.RM在NM上启动ApplicationMaster(AM) 注意AM消耗的资源都是container的 6.AM根据参数启动Driver并且…

使用Burp Suite进行Web应用渗透测试

使用Burp Suite进行Web应用渗透测试是一种常见的方法,可以帮助发现Web应用程序中的安全漏洞和弱点。 步骤: 准备工作: 首先,确保已经安装了Burp Suite,并配置浏览器以使用Burp Suite作为代理。 配置代理:…

Nvidia Jetson 编解码开发(7)Jetpack 4.x版本Multimedia API 硬件编码开发--输出端对接ROS publish

1.前言 Nvidia Jetson 编解码开发(6)Jetpack 4.x版本Multimedia API 硬件编码开发--输入端对接Camera V4L2采集_free-xx的博客-CSDN博客 基于上篇基于开发 需求: (1)2路Camera采集 + H265编码 (2)2路编码完的H265数据通过ROS 发布出去,上位机播放 2. 开发记录 2…

centos7根目录扩容

centos7根目录扩容 具体操作步骤欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants 创建一个自定义列表如…

C++技能系列 - 编码规范(Google C++编程风格指南)

现在的一切都是为将来的梦想编织翅膀,让梦想在现实中展翅高飞。 Now everything is for the future of dream weaving wings, let the dream fly in reality. 编码规范(Google C Style Guide) 编码规范(Google C Style Guide&am…

【每日一题】1267. 统计参与通信的服务器

【每日一题】1267. 统计参与通信的服务器 1267. 统计参与通信的服务器题目描述解题思路 1267. 统计参与通信的服务器 题目描述 这里有一幅服务器分布图,服务器的位置标识在 m * n 的整数矩阵网格 grid 中,1 表示单元格上有服务器,0 表示没有…

MyBatis与Spring的集成整合加优化分页功能

目录 一.为什么要将MyBatis和Spring整合??? 二.配置环境 2.1 pom文件 2.2 xml文件 三.演示举例 四.Aop整合pageHelper 分页插件 今天的分享就到这啦!!! 一.为什么要将MyBatis和Spring整合&#xff1f…

超声波创始人杨子超:AI Agents崛起

2023年7月23日,超声波俱乐部AI Open Day在北京举办,百位AI领域顶级创业者、知名投资人汇聚一堂。超声波创始人杨子超进行了一场精彩的分享,以下为杨子超的分享整理: 分享嘉宾:杨子超 超声波创始人分享主题:…

Gradle 如何配置全局 mavenCentral()

我们都知道 Gradle 会使用 Maven 的中央仓库。 在 Gradle 的配置文件中,通常有一个 mavenCentral() 如果我们想把 mavenCentral() 的仓库地址全局替换掉别的仓库地址的话。 我们可以在 C:\Users\yhu\.gradle 目录下创建一个 init.gradle 文件。 文件中的代码为&a…

mq与mqtt的关系

文章目录 mqtt 与 mq的区别mqtt 与 mq的详细区别传统消息队列RocketMQ和微消息队列MQTT对比:MQ与RPC的区别 mqtt 与 mq的区别 mqtt:一种通信协议,规范 MQ:一种通信通道(方式),也叫消息队列 MQ…

Cauchy’s integral formula

见:https://math.mit.edu/~jorloff/18.04/notes/topic4.pdf

基于Java的旅游信息推荐系统设计与实现,springboot+vue,MySQL数据库,前后端分离,完美运行,有三万字论文。

基于Java的旅游信息推荐系统设计与实现,springbootvue,MySQL数据库,前后端分离,完美运行,有三万字论文。 前台主要功能:登录注册、旅游新闻、景区信息、美食信息、旅游线路、现在留言、收藏、预定旅游线路…

力扣数组类题目--41缺失的第一个正数

41 缺失的第一个正数 给你一个未排序的整数数组 nums ,请你找出其中没有出现的最小的正整数。 请你实现时间复杂度为 O(n) 并且只使用常数级别额外空间的解决方案。 示例 1: 输入:nums [1,2,0] 输出:3 示例 2: 输入&a…

词向量及文本向量

文章目录 引言1. 文本向量化2. one-hot编码3. 词向量-word2vec3.1 词向量-基于语言模型 4 词向量 - word2vec基于窗口4.1 词向量-如何训练 5. Huffman树6. 负采样-negative sampling7. Glove基于共现矩阵7.1 Glove词向量7.2 Glove对比word2vec 8. 词向量训练总结9. 词向量应用9…

Docker安装与部署java项目

文章目录 Docker安装与部署java项目 用的宝塔服务器查看容器命令部署 java 项目这是别人用的 用这个要保证 自己docker 有 jdk1.8这个是我自己的 宝塔安装的 jdk1.8 注意 需要把 jshepr 替换成自己的 jar 名字 要小写下面命令有关于 jshepr 都要改成 上面写地自己的jar3&#x…

优质内容竞争时代,爱奇艺踏进「质变」进行时

作者 | 方怡 来源 | 洞见新研社 各大企业半年报接连发布的热闹关头,爱奇艺给出了意料之中的喜人成绩。 财报显示,今年二季度,爱奇艺总营收为78亿元,同比增长17%。其中,包括会员服务、广告收入、内容发行和其他收入在…