Nginx 网站服务

Nginx

稳定性高

(但是没有apache稳定)
版本号:1.12 1.20 1.22

系统资源消耗低

     (处理http请求的并发能力很高,单台物理服务器可以处理30000-50000个并发请求)

稳定:一般在企业中,为了保持服务器稳定,并发量的设置在20000个左右。

占用内存2M左右;keep-alive则占用内存在3M左右

Nginx主要功能

  1. 静态文件服务:nginx可以直接提供静态文件的服务,如 HTML,CSS,AVAScript,图片等能够高效地处理并且响应静态文件的请求
  2. 反向代理:可作为反向代理的服务器,将客户端的请求转发给后端多个服务器,并且可以实现负载均衡,高可用,从而提高整个集群的性能以及可靠性。
    客户端请求时,沟通代理服务器会把请求流量按轮询算法,转发到后台不通的服务器上,实现负载均衡,高可用。
  3. 处理动态内容:Nginx处理动态内容很差,php  node.is  java  python  nginx可以代理请求,然后发送到后端的动态服务处理;动态服务器理完之后,Nginx来把动态请求响应给客户端。
  4. SSL/TLS加密:HTTPS的加密方式,数字证书验证机制。
  5. 虚拟主机:Nginx可以在一台服务器上设置多个虚拟主机;同一个服务器上可以有多个域名和站点
  6. URL重定向:可以实现灵活的url重写和重定向。
  7. 缓存功能:Nginx自带缓存功能。
  8. 日志功能:可以详细的记录请求的信息,包括访问时间,请求路径 ip地址,响应状态,有助于故障排查
    系统控制的日志,记录在/ar/log/messages
    业务日志:aess.og  error.log  aess记录的谁访问我了,都是访问成功的记录;
    error日志也记录谁访问了我,但是记录的是访问失败的记录。
正向代理

客户端 —— (运营商) —— nginx服务器 —— web服务器

VPN也是典型的正向代理;已知后端服务器,请求只会往固定的服务器发送

反向代理

客户端 —— nginx服务器(代理) —— 
( 通过轮询算法,随机指向其中一台web服务器 ) —— 
web服务器1  或  web服务器2  或  web服务器3 (这三天服务器称之为集群)

从而实现了高可用、负载均衡

Nginx的主要应用场景

  • 静态服务
  • 反向代理、负载均衡
  • 缓存服务
  • 动态服务

Nginx是如何实现高并发的    *面

  • Nginx自身代码的问题: 大量的底层代理进行了优化,同时自带了一个功能模块。epol模块,支持高并发。
  • Nginx也是一个master进程控制多个work进程。master负责收集和分发请求,work是实际执行者。每一个请求进来,master就会拉起一个work进程处理请求,同时master进程也负责监控worker的状态
    worker的数量和cpu要一致或者是cpu的2倍.
    worker处理请求的过程中,只受内存大小的限制。
    所以可以处理多个请求,再加上nginx本身就是轻量级的服务,处理请求时占用的内存本身就很少,所以可以起到大并发处理的能力。

二者之间相互依赖,相互补充

建立 Nginx 服务

关闭防火墙

systemctl stop firewalld
setenforce 0

安装依赖包

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

创建运行用户、组

useradd -M -s /sbin/nologin nginx

(Nginx 服务程序默认以 nobody 身份运行,建议为其创建专门的用户账号,以便更准确地        控制其访问权限)

编译安装 Nginx

tar -xf nginx-1.22.0.tar.gz -C /opt/

解压nginx安装包

--with-http ssl module\                   #http协议的加密模块
--with-http_v2 module\                   #安装http2.0模块
--with-http realip module\               #允许nginx获取客户端的真实ip地址
--with-http stub status module\      #可以记录nginx访问状态信息的模块
--with-http_gzip static_module\      #支持页面压缩功能
--with-pcre\                                     #支持pcre库
--with-stream\                                 #支持tcp/udp代理模块
--with-stream ssl module\               #tcp/udp的加密横块
--with-stream realip module            #允许nginx作为代理服务器时,可以获取客户端的ip

make -j 4 && make install

编译并安装

安装后生成四个文件及功能
  • conf:保存的是所有nginx的配置文件,其中最核心的就是nginx.conf
  • html:保存nginx的web文件,这是默认目录可改
  • logs:保存日志文件的位置
  • sbin:nginx二进制的启动脚本,可以结合不同

50x.html:是nginx默认的错误页面显示

添加Nginx系统服务

vim /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=/usr/local/nginx/run/nginx.pid
#注意文件位置,如果不对 启动不了
ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf 
#注意启动文件位置
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s TERM $MAINPID


[Install]
WantedBy=multi-user.target

赋权限

chown -R nginx.nginx /usr/local/nginx      #修改权限

常用命令
  • nginx -t:检查配置文件是否配置正确。
  • nginx -v:查看niginx的版本号
  • nginx -s:向主进程传输信号 —— 停止、开启、重启、重新加载
  • niginx -c:设置配置文件的默认路径
  • ulimit -a:  
信号符

信号符结合kill命令使用

kill -USR1 pid号          #日志分割
kill -s HUP pid号         #只要是kill,只能跟pid号,重新加载
killall -s HUP nginx     #可以跟服务名,也可以用pid号
kill -s  QUIT pid号      #优雅退出(有人访问时不会结束进程,访问完后才会结束进程)
kill -s WHICH pid号    #优雅介绍work进程(请求结束后,才结束work)

创建目录

mkdir -p /usr/local/nginx/run/

修改配置文件

vim /usr/local/nginx/conf/nginx.conf
pid /usr/local/nginx/run/nginx.pid;
#找到 pid的位置修改  

重启服务

systemctl daemon-reload 

systemctl restart nginx

重新加载配置,并重启服务

全局配置的模块

  • events模块:配置影响nginx服务器与用户之间的网络链接
  • http模块:只要是针对http请求的配置,代理,缓存,日志,反向代理,虚拟web主                          机,也可写在stream中,server块
                        非http请求的方式,不能写在该模块当中                                                                            反向代理:七层,四层方向代理,不能写在http的模块
  • server块:配置虚拟主机的相关参数,一个HTTP模块当中可以有多个server模块
                     包含在HTTP模块中,不能单独设置
  • location块:匹配的是uri,包含在server当中不能单独设置 
location模块中  root和alias的区别      *面
  • root:指定的目录和location匹配的uri之间做的一个拼接,
    /opt/ky30/这俩个路径都真实存在而且都是目录,并且uri目录里面要有web文件。
  • alias : 匹配指定路径下的web文件

/root后面有没有  "/"  无所谓,加不加都可;root标签可以使用重定向
alias加了  "/"  后面也必须有  "/"  否则匹配不到;alias不可以设置重定向

  • porxy_pass:反向代理
  • upstream:反向代理指定服务器的命令,在HTTP模块中 七层,基于IP和端口,走HTTP协议
  • stream:四层,走的是TCP或者udp流量,不能写入HTTP,写在全局配置
修改Linux服务器最大打开文件数      *面

events块中 —— " worker_connections 1024 " 代表默认的最大进程连接数为1024

修改连接数有两种方法,如下:

可在命令行修改:

ulimit -n 65535

vim /etc/security/limits.conf

* soft nproc 65535: 最大进程数软限制为 65535,即可以使用 ulimit -u 命令查看和修改的值
* hard nproc 65535: 最大进程数硬限制为 65535,即最大可分配的进程数
* soft nofile 65535:最大打开文件数软限制为 65535,可以使用 ulimit -n 命令查看和修改值
* hard nofile 65535:最大打开文件数硬限制为 65535,即最大可分配的文件数

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

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

相关文章

记录 K8S 挂了的解决经过

背景:早上到公司,有同事反馈部署K8S在集群上的 Redis 和 禅道 都不可用 排查循序: 登录 kubesphere 的 web 界面 (界面打开失败)ssh 登录主服务器 (正常)在主服务器上运行 kubectl get node 命…

Qt QPair

QPair 文章目录 QPair 摘要QPairQPair 特点代码示例QPair 与 QMap 区别 关键字: Qt、 QPair、 QMap、 键值、 容器 摘要 今天在观摩小伙伴撸代码的时候,突然听到了QPair自己使用Qt开发这么就,竟然都不知道,所以趁没有被人发…

3、在 CentOS 8 系统上安装 PostgreSQL 15.4

PostgreSQL,作为一款备受欢迎的开源关系数据库管理系统(RDBMS),已经存在了三十多年的历史。它提供了SQL语言支持,用于管理数据库和执行CRUD操作(创建、读取、更新、删除)。 由于其卓越的健壮性…

k8s 集群部署 kubesphere

一、最小化部署 kubesphere 1、在已有的 Kubernetes 集群上部署 KubeSphere,下载 YAML 文件: wget https://github.com/kubesphere/ks-installer/releases/download/v3.4.0/kubesphere-installer.yaml wget https://github.com/kubesphere/ks-installer/releases/…

iPhone手机记笔记工具选择用哪个

iPhone手机大家应该都比较熟悉,其使用性能是比较流畅的,在iPhone手机上记录笔记可以帮助大家快速地进行总结工作、记录工作内容等,在iPhone手机上记笔记工具选择用哪个呢? 可以在iPhone手机上使用的笔记工具是比较多的&#xff0…

Andriod学习笔记(一)

写在前面的话 App开发的编程语言Java和KotlinXML App连接的数据库App工程目录结构模块级别的编译配置文件清单文件 界面显示与逻辑处理 安卓是一种基于Linux内核的自由及开放源代码的操作系统,主要使用于移动设备。 Mininum SDK表示安卓该版本以上的设备都可以运行该…

零基础学python之流程控制

文章目录 流程控制if 判断语句if 判断if 多条件判断if 的嵌套总结 while 循环基本语法案例:重复执行五次死循环 循环计算打印小星星循环打印小星星九九乘法表 for 遍历for 语句rangefor遍历可迭代对象 break 和 continuebreakcontinueelse 语句(了解&…

在Openresty中使用lua语言向请求浏览器返回请求头User-Agent里边的值

可以参考《Linux学习之Ubuntu 20.04在https://openresty.org下载源码安装Openresty 1.19.3.1,使用systemd管理OpenResty服务》安装Openresty。 然后把下边的内容写入到openresty配置文件/usr/local/openresty/nginx/conf/nginx.conf(根据实际情况进行选…

基于SSM的网络安全宣传网站设计与实现

末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:采用JSP技术开发 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目&#x…

医疗机构又进化了,一招搞定UPS设备太爽了!

在现代社会中,能源供应的可靠性至关重要,不间断电源(UPS)系统是维持关键设备运行的关键组成部分。UPS监控是一种重要的技术,用于实时监测UPS的性能、电池状态和电力质量。 客户案例 四川某医院是一家大型医疗机构&…

应对广告虚假流量,app广告变现该如何风控?

移动广告市场中的虚假流量一直是困扰各移动应用厂商的难题,广告作为app商业化变现最为直接快捷的途径,也引申出了流量作弊与反作弊的纷争。 根据《2021中国异常流量报告》,2021年中国品牌广告市场因异常流量造成的损失约为326亿人民币&#…

适合学生写作业的台灯有哪些?高品质学生读写台灯推荐

不得不说如今我国青少年儿童的近视率还是非常高的,据国家卫健委疾控局数据,我国儿童青少年总体近视率为52.7%,其中6岁儿童为14.3%,小学生为35.6%,初中生为71.1%,高中生为80.5%,造成近视的原因不…

2. redis常见数据类型

一、Redis 数据类型 Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合…

1800*C. Table Decorations(贪心 || 二分)

Problem - 478C - Codeforces 解析: 做法一:二分,显然左右边界为 0 和 总数量除以3。check时mid,任意两项之和都不能小于mid 做法二:贪心,当数量最大的气球数量的一半小于另外两种颜色气球的数量之和&#…

[Python]图片转字符画——这就是我的表情!!!!!!

背景 偶尔看到一些视频,他们把图片转字符画,平常也没有去关注,今天来捣鼓一下。 研究了一下还超级简单的,都是调用别人写好的框架。 网上也有很多教学。 代码实现 from PIL import Image # 表示字符颜色,由深到浅&am…

阿里云ModelScope 是一个“模型即服务”(MaaS)平台

简介 项目地址:https://github.com/modelscope/modelscope/tree/master ModelScope 是一个“模型即服务”(MaaS)平台,旨在汇集来自AI社区的最先进的机器学习模型,并简化在实际应用中使用AI模型的流程。ModelScope库使开发人员能够通过丰富的…

浅谈智能型电动机控制器在斯里兰卡电厂中的应用

摘要:传统的低压电动机保护是通过继电保护二次回路实现,但是我们结合电厂辅助控制设备的特点及其控制要求,推荐ARD2F智能型电动机控制器。以下综合介绍ARD2F智能型电动机控制器产品的特点及其智能化保护、测量、控制和通讯等。 Abstract: Th…

shell中实用eval命令和安全问题

eval命令非常强大,但也非常容易被滥用。 它会导致代码被解析两次而不是一次。这意味着,如果你的代码中包含变量引用,shell解析器将评估该变量的内容。如果变量包含一个shell命令,shell可能会运行该命令,无论你是否希望…

【经典排序算法 time: 2023-10-12】插入排序(层层优化改进)

原理 每次循环往后面拿出一个元素排到前面有序序列中(动态演示) 插排第一版 public class InsertSort {public static void main(String[] args) {long start System.currentTimeMillis();int[] arr {11, 23, 69, 99, 1, 3, 45, 67, 5, 234, 678, 99…

ppt录屏没有声音?超实用教程来了!

随着信息技术的发展,ppt已经成为工作中必不可少的工具。无论是工作报告、项目展示还是学术交流,都离不开ppt的辅助。屏幕录制功能是ppt的一个重要特性,可以帮助用户方便地录制幻灯片演示,但在使用过程中,有时会遇到ppt…