Nginx学习(二)
------------恢复内容开始------------
Nginx配置文件
主配置文件结构:四部分
main block:主配置段,既全局配置段,对Http,mail都有效
event{
}事件驱动配置
http {
...
...各server的公共配置
server{
每个server用于定义一个虚拟主机
}
server{
...
server_name 虚拟主机名
root 主目录
alias 路径别名
location[operator] URL {
...
if condition }
}
} http/https协议相关配置
mail {
} mail协议相关配置
stream {
} stream服务器相关配置
##################################################################################################################################################
nginx全局配置介绍
user nginx;
以nginx身份来运行程序,并且user指令只能放到全局位置。
worker_processes auto;
性能相关设置,worker进程数量设置 ,worker进程数和物理cpu核数一样 使用lscpu可以查看(胖小8个worker进程因为cpu是8核的)
注意#worker进程不需要太多,第一次请求session缓存到第一个worker线程,第二次请求可能跑下一个worker上去,使用epoll模式 一个worker进程可以处理多个请求。
worker_cpu_affinity auto [cpumask] ; 提高缓存命中率
CPU MASK : 00000001 : 0号CPU 第一颗CPU
00000010 : 2号CPU 第二颗CPU 看数字1在整个数字的位置 从右边开始数
10000000 : 8号CPU 第八颗CPU
#注意:CPU也有缓存,让worker和CPU绑定 这样CPU缓存可以一直对这个worker进程使用,提高缓存命中率。
worker_cpu_affinity(亲缘性) 001 0010 0100 1000;
worker_priority number
指定worker进程nice的值,设定worker进程的优先级: [-20,20]
#注意 最大就是19,设置成20也是19.
worker_rlimit_nofile number
#注意 worker进程所能够打开的文件数量上限 ,如65535
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;
pid 存放master进程号的, 并且程序停止nginx.pid文件被删除。
#程序在运行的时候删除nginx.pid文件会导致使用nginx -s stop的时候报错,报找不到/run/nginx.pid文件所以停不了应用程序。
# Load dynamic modules. See /usr/share/doc/nginx/README.dynamic.
include /usr/share/nginx/modules/*.conf;
include指令:指明包含进来的其他配置文件片段
load_module file
模块加载配置文件:/usr/share/nginx/modules/*.conf
指明要装载的动态模块路径:/usr/lib64/nginx/modules
#现在加载模块主要有include在全局配置里面设置了
events {
worker_connections 1024;
}
ab 命令
watch -n0.5 "ps axo pid,cmd,psr |grep nginx|grep -v grep|grep -v master"
1、worker_rlimit_nofile number
worker进程所能够打开的文件数量上限 ,如65535
2、worker_connections number
每个worker进程所能够打开的最大并发连接数
3、总最大并发数: worker_rlimit_nofile * worker_connections
4、user method
指明并发连接请求的处理方法,默认自动选择最优方法。
use epoll;
5、accept_mutex on|off 互斥
处理新的连接请求的方法; on指由各个worker轮流处理新请求,off指每新请求的到达都会通知(唤醒)所有的worker进程,但只有一个进程可以获得连接,造成
"惊群",影响性能。
调试配置方面
1、daemon on|off
on在后端运行,off在前端运行。
#适合调试测试环境使用
2、master_process on|off
是否启用worker进程
http配置介绍
1、 ngx_http_code_module
default_server 设定为默认虚拟主机
ssl 限制仅能够通过ssl连接提供服务
backlog=number 超过并发连接数后,新的请求进入后援队列的长度
rcvbuf=size 接受缓冲区大小 #根据内存大小设置
sndbuf=size 发送缓冲区大小 #根据内存大小设置
#注意
1. 基于port:
listen PORT: #指令监听在不同的端口
2.基于ip的虚拟主机
listen IP:PORT; #IP地址不同
3.基于hostname
server_name fqdn; #指令指向不同的主机名
#支持通配符和正则表达式
tcp_nodelay no|off
在keepalived模式下的连接是否启用TCP_NODELAY
当为off时,延迟发送,合并多个请求后在发送
#提升服务器性能,但是客户体验不好
当为on时,不延迟发送,来一个请求立即发送
#客户体检非常好,但是性能会有所损耗
sendfile on|off
on : 在内核当中直接封装报文然后直接发送到内核的socket buffer(socket缓冲区当中,然后直接由内核到网卡直接发送出去,正常请求要内核到用户空间再有用户空间到内核的网卡上无形当中又白跑了一圈)
off: 默认情况
server_tokens on|off|build|string
是否在响应报文的server首部显示Nginx版本
------------恢复内容结束------------
Nginx学习(二)的更多相关文章
- nginx学习(二):nginx显示默认首页解析过程
本篇文章分析下nginx 显示默认首页的过程 如下图所示 查看config文件: # 如果忘记nginx 安装目录.使用下面命令查看 [root@XXX]# whereis nginx nginx: ...
- Nginx学习系列二Linux下Nginx实现负载均衡
关于在本地虚拟机(VMware 14)下安装Linux同时安装Nginx,请参考Nginx学习系列之搭建环境 1.启动Nginx 在Nginx安装成功的前提下,启动Nginx 已root模式登陆(权限 ...
- Nginx系列0:Nginx学习历程
Nginx学习历程 一.初识Nginx 1.Nginx适用于哪些场景 (1)静态资源服务 通过本地文件系统提供服务 (2)反向代理服务 Nginx的强大性能 缓存 负载均衡 (3)API服务 Open ...
- Nginx学习总结
2017年2月23日, 星期四 Nginx学习总结 Nginx是目前比较主流的HTTP反向代理服务器(其企业版提供了基于TCP层的反向代理插件),对于构建大型分布式web应用,具有举足轻重的作用.简单 ...
- [转帖]nginx学习,看这一篇就够了:下载、安装。使用:正向代理、反向代理、负载均衡。常用命令和配置文件
nginx学习,看这一篇就够了:下载.安装.使用:正向代理.反向代理.负载均衡.常用命令和配置文件 2019-10-09 15:53:47 冯insist 阅读数 7285 文章标签: nginx学习 ...
- emberjs学习二(ember-data和localstorage_adapter)
emberjs学习二(ember-data和localstorage_adapter) 准备工作 首先我们加入ember-data和ember-localstorage-adapter两个依赖项,使用 ...
- Nginx学习回顾总结 部分:
21:46 2015/11/9Nginx学习回顾总结进程间通信,近似于socket通信的的东西:才发现这种通信并不是很难,并不是我想象的那样很多内容,新领域,入门只是几个函数的使用而已.以前猜过是这样 ...
- ReactJS入门学习二
ReactJS入门学习二 阅读目录 React的背景和基本原理 理解React.render() 什么是JSX? 为什么要使用JSX? JSX的语法 如何在JSX中如何使用事件 如何在JSX中如何使用 ...
- TweenMax动画库学习(二)
目录 TweenMax动画库学习(一) TweenMax动画库学习(二) TweenMax动画库学习(三) Tw ...
- Hbase深入学习(二) 安装hbase
Hbase深入学习(二) 安装hbase This guidedescribes setup of a standalone hbase instance that uses the local fi ...
随机推荐
- [Algorithm] 53. Maximum Subarray
Given an integer array nums, find the contiguous subarray (containing at least one number) which has ...
- [RN] React Native Image 实现placeholder占位图
React Native Image 实现placeholder占位图 react-native Image没有placeholder这样的props,但是业务有需要这种场景, 解决方法为: 使用Im ...
- shell编程题(五)
打印root可以使用可执行文件数. echo "root's bins: $(find ./ -type f | xargs ls -l | sed '/-..x/p' | wc -l)&q ...
- 使用IDEA创建一个Servlet应用程序
使用IDEA创建一个Servlet应用程序 第一步:创建web应用 选择web application应用,之后填写项目名称等. 第二步:项目配置 在WEB-INF目录下创建两个文件夹:classes ...
- Salesforce LWC学习(八) Look Up组件实现
本篇参考https://www.salesforcelwc.in/2019/10/lookup-in-lwc.html,感谢前人种树. 我们做lightning的时候经常会遇到Look up 或者MD ...
- eclipse&myeclipse 生成jar包后,spring无法扫描到bean定义
问题:eclipse&myeclipse 生成jar包后,spring无法扫描到bean定义 在使用getbean或者扫包时注入bean失败,但在IDE里是可以正常运行的? 原因:导出jar未 ...
- 学习spring源码-可参考的资料
剑指Spring源码(二) https://www.cnblogs.com/codebear/p/10374261.html 使用idea和gradle编译spring5源码https://blog. ...
- python中进程、线程、协程简述
进程 python中使用multiprocessing模块对进程进行操作管理 进程同步(锁.信号量.事件) 锁 —— multiprocessing.Lock 只要用到了锁 锁之间的代码就会变成同步的 ...
- javascript中的each遍历
each的用法 1.数组中的each 复制代码 var arr = [ "one", "two", "three", "four ...
- Appium 滑动踩坑记
前言 对于不同java-client版本,很多的API已经产生大的变化,所以一些API大家会发现已经失效或者使用方式发生了变化,滑动就是其中一项,这篇文章对滑动在不同的java-client版本以及不 ...