目录
一、Nginx配置文件详解
1.关闭版本
关闭版本号
server_tokens语句:来自核心模块,使用以下链接查看官方文档的详细解释
server_tokens on:#这是默认设置,表示在响应头部(Server字段)显示完整的Nginx版
#本号以及可能的操作系统和模块信息。这有助于调试,但可能会暴露服
#务器的敏感信息给潜在攻击者。
server_tokens off:#关闭版本信息显示,仅显示“Server: nginx”。这样可以提高安全性,
#因为攻击者无法通过响应头部获取精确的Nginx版本和其他详细信息。
server_tokens build:#仅显示编译时的基本版本信息,如"Server: nginx/1.23.4",不
#包含详细的模块和操作系统信息。
server_tokens string:#允许自定义响应头部的Server字段内容,例如 "server_tokens
#my_custom_string;",将会显示 "Server: my_custom_string"
2.修改启动进程数
worker_processes 1;
#允许的启动工作进程数数量,和你真实的cpu数量有关 1
worker_processes auto;
#如果设置为auto 就是你真实的cpu数量
[root@localhost ~]#ps axo pid,cmd,psr,ni|grep nginx
#可以看到 nginx的 worker数量
18620 nginx: master process /usr/ 0 0
18621 nginx: worker process 2 0
18622 nginx: worker process 3 0
18623 nginx: worker process 0 0
18624 nginx: worker process 3 0
18641 grep --color=auto nginx 0 0
3.cpu与work进程绑定
将Nginx工作进程绑定到指定的CPU核心,默认Nginx是不进行进程绑定的,绑定并不是意味着当前nginx进程独占以一核心CPU,但是可以保证此进程不会运行在其他核心上,这就极大减少了nginx的工作进程在不同的cpu核心上的来回跳转,减少了CPU对进程的资源分配与回收以及内存管理等,因此可以有效的提升nginx服务器的性能。
CPU序号:
CPU MASK: 00000001:0号CPU
00000010:1号CPU
................
10000000:7号CPU
worker_cpu_affinity 00000001 00000010 00000100 00001000;第0号---第3号CPU
#序号绑定cpu 亲缘性
worker_cpu_affinity 00000101 00001010;
#同一个work 可以绑定 两个cpu可以这么写 但是不建议,本来就是 不希望飘动,这样也是飘动
例子:
user nginx;
worker_processes auto;
worker_cpu_affinity 00000001 00000010;
#绑定到 第一 和 第二块cpu上
error_log /var/log/nginx/error.log;
#注意 要绑一起绑
[root@localhost ~]#ps axo pid,cmd,psr,ni|grep -v grep |grep nginx|sort -n
18620 nginx: master process /usr/ 2 0
18951 nginx: worker process 0 0
18952 nginx: worker process 1 0
18954 grep --color=auto nginx 2 0
验证cpu乱跑可以刷新网页即可
while true ;do ab -c 1000 -n 1000 http://192.168.91.100/;done
4.work进程的优先级
当你想将nginx的work进程的优先级调高 可以使用nice设置
[root@localhost ~]#ps axo pid,cmd,psr,ni|grep nginx|sort -n
#查看默认优先级,默认优先级为0
18620 nginx: master process /usr/ 3 0
19045 nginx: worker process 0 0
19046 nginx: worker process 1 0
19082 vim /etc/nginx/nginx.conf 1 0
19173 grep --color=auto nginx 1 0
修改配置文件
user nginx;
worker_processes 2;
worker_cpu_affinity 00000101 00000010;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;
worker_priority -20;
#添加此项
nginx -s reload
[root@localhost ~]#ps axo pid,cmd,psr,ni|grep nginx|sort -n
18620 nginx: master process /usr/ 3 0
19196 nginx: worker process 0 -20
19197 nginx: worker process 1 -20
19199 grep --color=auto nginx 1 0
5.调试work进程打开的文件的个数
6.关闭work进程
master_process off|on
是否开启Nginx的master-worker工作模式,仅用于开发调试场景,默认为on(开启)
二、event和io模型调优
三、http语句设置
1.mime
此项为支持的 文件格式,如果不支持的格式 会自动帮你下载,如果支持 就会显示在网页上
2.server语句
server下的 root
使用方法的官方文档
root指定了主页文件的位置
注意在编写配置文件时,每段的末尾需要以:结尾
server块构建虚拟主机
基于域名
在子配置目录中,分别建立两个不同的配置文件
分别建立number目录和name目录,并建立数据文件
建立完成后,检查配置文件,确认无误后重新加载配置文件
在客户端的/etc/hosts文件中添加服务器的域名,与服务器配置文件中的server_name名称相同,让客户端访问时能够正确解析IP地址,而后使用客户机访问不同的域名,就会得到不同的信息
alias别名
server {
listen 80;
server_name www.kgc.com;
location /nwes {
root /data/nginx/html/pc/;
#相当于追加 将 文件夹news追加到/data/nginx/html/pc/news
}
location /study{
alias /mnt/nginx/sports/;
#相当于替换 你访问 study 就是访问/mnt/nginx/sports
}
}
3.localtion语句
location语句在Nginx配置文件中用于定义URL请求与服务器资源之间的映射关系,以及针对特定URL路径的处理规则。它是一个非常关键且灵活的指令,允许根据请求URI来控制Nginx如何处理客户端的HTTP请求。
在一个server中location配置段可存在多个,用于实现从uri到文件系统的路径映射;ngnix会根据用户请求的URI来检查定义的所有location,按一定的优化级找出一个最佳匹配,而后应用其配置在没有使用正则表达式的时候,nginx会先在server中的多个location选取匹配度最高的一个uri,uri是用户请求的字符串,即域名后面的web文件路径,然后使用该location模块中的正则url和字符串,如果匹配成功就结束搜索,并使用此location处理此请求。
location [ = | ~ | ~* | ^~ ] uri { ... }
= #用于标准url前,需要请求字串与uri精确匹配,大小敏感,如果匹配成功就停止向下匹配并立即处理请求
^~ #用于标准url前,表示包含正则表达式,并且匹配以指定的正则表达式开头,对URI的最左边部分做匹配检查,不区分字符大小写
~ #用于标准url前,表示包含正则表达式,并且区分大小写
~* #用于标准url前,表示包含正则表达式,并且不区分大写
不带符号 #匹配起始于此uri的所有的uri
#\ #用于标准url前,表示包含正则表达式并且转义字符。可以将 . * ?等转义为普通符号
#匹配优先级从高到低:
=, ^~, ~/~*, 不带符号
4.access模块
Nginx的access模块,通常指的是ngx_http_access_module模块。这个模块提供了基于客户端IP地址的简单访问控制功能,允许管理员通过配置文件定义哪些IP地址或地址范围可以或者不能访问服务器资源。
Module ngx_http_access_module :官方文档
使用grep过滤出access模块、
如何查看模块是否默认安装?
http://nginx.org/en/docs/http/ngx_http_access_module.html
[root@localhost nginx-1.18.0]#./configure --help |grep access
# 可以去源码包中 过滤 access模块 自带 不想要可以 without 去掉
--without-http_access_module disable ngx_http_access_module
--http-log-path=PATH set http access log pathname
--without-stream_access_module disable ngx_stream_access_module
location / {
deny 192.168.1.1;
allow 192.168.1.0/24;
allow 10.1.1.0/16;
allow 2001:0db8::/32;
deny all;
}
配置文件修改
server {
listen 80;
server_name www.kgc.com;
allow 192.168.91.0/24;
deny 192.168.91.101;
location / {
root /data/nginx/html/pc;
}
}