当前位置: 首页 > news >正文

Nginx网站服务详解(设置并发数、实现不同虚拟主机等)

目录

一、nginx的最大并发数设置

二、nginx的状态收集模块

三、nginx的用户身份验证

四、nginx的location中root和alias的区别

五、nginx访问黑白名单限制

六、nginx的虚拟主机设置

第一种:基于不同域名的虚拟主机

第二种:基于不同ip地址

第三种:基于不同的端口


一、nginx的最大并发数设置

分为应用程序的设置和系统内核的设置

设置:
##应用程序的配置,修改配置文件
第一步:设置worker_processes进程的数量,一般为cpu的核数,或者为auto;
第二步:进行worker_processes与cpu绑核,设置worker_cpu_affinity;
第三步:设置worker进程的最大文件打开数量worker_rlimit_nofile和worker进程的最大连接数量worker_connections;并且启动epoll开发模型;
第四步:保存退出后nginx -t检查一下语法,并重启nginx服务,ps aux|grep nginx去查看nginx的worker进程的pid号##修改linux系统内核能打开的最大文件数量
在/etc/security/limits.conf中,设置最大的nofile文件数量
* soft nofile 81920
* hard nofile 81920
改完以后,使用ulimit -a 查看一下##验证
cat /usr/local/nginx/logs/nginx.pid
cat /proc/<pid号>/limits 进行查看

二、nginx的状态收集模块

 

在配置文件中添加模块开启 

##访问状态统计目录需要放到server模块下面,去进行相应站点的统计
server {
...location /nginx_status { stub_status  on;access_log   off;}
}

浏览器访问 http://192.168.20.30/nginx_status
Active connections:表示当前的活动连接数,即当前与 Nginx 服务器建立的连接数。
##也就是netstat -natp|grep nginx|grep -c ESTABLI
server accepts handled requests :表示已经处理的连接信息
三个数字依次表示服务器已接收的连接数;服务器成功处理的连接数;服务器累计处理的总请求数(在保持连接模式下,请求数量可能会大于连接数量)
Reading:表示当前正在从客户端读取数据的连接数。
Writing:表示当前正在向客户端写入数据的连接数。
Waiting:表示当前空闲并等待请求的连接数。

三、nginx的用户身份验证

比如说上一个实验中的状态统计数量,这种内部数据,是不希望其他人能看见的,那么可以添加一个用户认证

 

第一步:安装httpd-tools  ##yum install -y httpd-tools
第二步:设置密码  ##htpasswd -c /usr/local/nginx/userlist.db(授权用户名) 用户名
第三步:给该文件加上nginx用户的权限和只给读的权限
chown nginx /usr/local/nginx/userlist.db
chmod 400 /usr/local/nginx/userlist.db
##注意设置多个用户的时候,需要去掉-c选项,否则会清空原有的用户,-c表示新建
##如htpasswd /usr/local/nginx/userlist.db(授权用户名) 用户名2第四步:修改nginx的配置文件,进行设置,这里是放在nginx的location模块下
server{
....location /nginx_status {stub_status  on;access_log   off;auth_basic "username and password";  auth_basic_user_file /usr/local/nginx/userlist.db;}
}

 需要注意的是,这个auth模块的配置是由三个地方的

##在 http{} (所有站点生效)    

server{} (只在当前站点中生效)  

location{} (只对当前站点的指定URL路径生效) 配置

如果是访问失败,会返回状态码401,告知需要用户身份认证

四、nginx的location中root和alias的区别

root指定的路径处理方式是root路径+location匹配的路径为最终的URL路径
alias指定的路径处理方式是alias路径直接替换location匹配路径,也就是alias路径为URL路径

 

结果验证

 

设置两个location匹配,放在同一个server模块下:location /test {root   html;}location /cesh {alias   html;}

五、nginx访问黑白名单限制

基于上述的进行限制实验

 

 

        location /test {root   html;deny 192.168.20.10;}location /cesh {alias   html;allow 192.168.20.10;deny all;}

 需要注意的是,这个黑白名单的设置也有三个地方的

http{} (所有站点生效)    

server{} (只在当前站点中生效)  

location{} (只对当前站点的指定URL路径生效)

如果是访问失败,会返回状态码403,告知需要用户权限不足

访问控制规则如下:
deny IP/IP 段:拒绝某个 IP 或 IP 段的客户端访问。
allow IP/IP 段:允许某个 IP 或 IP 段的客户端访问。
规则从上往下执行,如匹配则停止,不再往下匹配。

六、nginx的虚拟主机设置

第一种:基于不同域名的虚拟主机

 

 

        server {listen 192.168.20.30:80;server_name www.accp.com; ##这个站点的域名为 www.accp.comlocation / {root html/accp; ##设置该域名的访问默认网页index  index.html index.htm;}}server {listen 192.168.20.30:80;server_name www.benet.com;##这个站点的域名为 www.benet.comlocation / {root html/benet;##设置该域名的访问默认网页index  index.html index.htm;}}

第二种:基于不同ip地址

 

        server {listen 192.168.20.30:80;##这是ens33网卡server_name www.accp.com;location / {root html/accp;index  index.html index.htm;}}server {listen 192.168.20.32:80;##这是ens33:0虚拟网卡,这里是用于测试server_name www.benet.com;location / {root html/benet;index  index.html index.htm;}}

第三种:基于不同的端口

        server {listen 192.168.20.30:6060;##基于不同端口server_name www.accp.com;location / {root html/accp;index  index.html index.htm;}}server {listen 192.168.20.30:8080;##基于不同端口server_name www.benet.com;location / {root html/benet;index  index.html index.htm;}}

 总结:

掌握nginx的最大并发数量的设置

掌握nginx的状态模块收集,一般会关闭日志收集

掌握黑白名单和用户认证的设置,这都是有三个不同的作用域http\server\location

掌握root和alias的区别,一个是追加location路径 一个是直接替换location路径

掌握三种不同方式虚拟主机,基于不同域名 基于不同ip 基于不同端口

相关文章:

  • 初始数据结构(加深对旋转的理解)
  • 深度学习猫狗分类 - python opencv cnn 计算机竞赛
  • SELinux refpolicy详解(13)
  • HDFS Java API 基本操作实验
  • 解决方案:Mac 安装 pip
  • 用23种设计模式打造一个cocos creator的游戏框架----(十)迭代器模式
  • Qt/C++音视频开发57-切换音视频轨道/切换节目流/分别切换音频视频轨道
  • java 有一个N位数字,各位加起来不超过M。
  • 【银行测试】金融项目+测试方法范围分析,功能/接口/性能/安全...
  • 【Vue3从入门到项目实现】RuoYi-Vue3若依框架前端学习——登录页面
  • 【ArcGIS Pro微课1000例】0051:创建数据最小几何边界范围(点、线、面数据均可)
  • 【Vue+Python】—— 基于Vue与Python的图书管理系统
  • 第一课【习题】HarmonyOS应用/元服务上架
  • 快速登录界面关于如何登录以及多账号列表解析以及config配置文件如何读取以及JsLogin模块与SdoLogin模块如何通信(4)
  • 数据结构第二次作业——递归、树、图【考点罗列//错题正解//题目解析】
  • 「面试题」如何实现一个圣杯布局?
  • JavaScript实现分页效果
  • java小心机(3)| 浅析finalize()
  • js操作时间(持续更新)
  • redis学习笔记(三):列表、集合、有序集合
  • 后端_ThinkPHP5
  • 基于 Babel 的 npm 包最小化设置
  • 容器化应用: 在阿里云搭建多节点 Openshift 集群
  • 深入浏览器事件循环的本质
  • 温故知新之javascript面向对象
  • 一道闭包题引发的思考
  • 因为阿里,他们成了“杭漂”
  • 硬币翻转问题,区间操作
  • 不要一棍子打翻所有黑盒模型,其实可以让它们发挥作用 ...
  • 整理一些计算机基础知识!
  • ​软考-高级-信息系统项目管理师教程 第四版【第19章-配置与变更管理-思维导图】​
  • #pragma multi_compile #pragma shader_feature
  • (翻译)Quartz官方教程——第一课:Quartz入门
  • (附源码)php新闻发布平台 毕业设计 141646
  • (附源码)计算机毕业设计SSM在线影视购票系统
  • (学习日记)2024.03.12:UCOSIII第十四节:时基列表
  • .md即markdown文件的基本常用编写语法
  • .NET I/O 学习笔记:对文件和目录进行解压缩操作
  • .net wcf memory gates checking failed
  • .Net 访问电子邮箱-LumiSoft.Net,好用
  • .NET序列化 serializable,反序列化
  • .set 数据导入matlab,设置变量导入选项 - MATLAB setvaropts - MathWorks 中国
  • .so文件(linux系统)
  • @ConditionalOnProperty注解使用说明
  • @select 怎么写存储过程_你知道select语句和update语句分别是怎么执行的吗?
  • @TableLogic注解说明,以及对增删改查的影响
  • @Validated和@Valid校验参数区别
  • [100天算法】-实现 strStr()(day 52)
  • [Android]How to use FFmpeg to decode Android f...
  • [Android学习笔记]ScrollView的使用
  • [BIZ] - 1.金融交易系统特点
  • [C++]Leetcode17电话号码的字母组合
  • [CISCN2019 华北赛区 Day1 Web2]ikun
  • [HDOJ4911]Inversion
  • [html] 动态炫彩渐变背景