Nginx 配件文件详解(二)|学习笔记

简介: 快速学习 Nginx 配件文件详解(二)

开发者学堂课程【Nginx 企业级 Web 服务实战Nginx 配件文件详解】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址https://developer.aliyun.com/learning/course/649/detail/10755


Nginx 配件文件详解(二)

三、 Nginx 核心配置详解:

1、全局配置:

user nginx nginx; #启动 Nginx 工作进程的用户和组

worker_ processes [number| auto]; #启动 Nginx 工作进程的数量,auto 会自动判断核心。

image.png

worker. cpu affinity 0000001 0000010 0000100 00001000; #将 Nginx 工作进程绑定到指定的 CPU 核心,

默认 Nginx 是不进行进程绑定的,绑定并不是意味着当前 nginx 进程独占以一核心CPU,但是可以保证此进程不会运行在其他核心上,这就极大减少了 nginx 的工作进程在不同的 cpu 核心上的来回跳转,减少了 CPU 对进程的资源分配与回收以及内存管理等,因此可以有效的提升 nginx 服务器的性能。

[root@s2 ~]"ps axo pid, cmd,psr,user I grep nginx

4106 nginx: master process /apps  1 root

4181 nginx: worker process       θ nginx

4182 nginx: worker process       1 nginx

4184 grep --color=auto nginx      θ root

#错误日志记录配置,语法: error_ 1og file [debug 1 info 1 notice 1 warn 1 error 1 crit 1

alert | emerg]

#error_ log 1ogs/error .1og;

Nerror. 1og logs/error .10g notice;

error_ 1og /apps/nginx/1ogs/error .1og error;

#pid 文件保存路径

Pid      /apps/nginx/1ogs/nginx.pid;

worker_ priority 0; w 工作进程 nice 值,-20-19

worker_ rlimit_ nofile 65536; #这个数字包括 Nginx 的所有连接(例如与代理服务器的连接等),而不仅仅是与客户端的连接,另一个考虑因素是实际的并发连接数不能超过系统级别的最大打开文件数的限制,

image.png

image.png

[root@s2 ~]# watch -n1'ps -axo pid, cmd,nice 1 grep nginx' #验证进程优先级

daemon off; #前台运行Nginx服务用于测试、 docker 等环境。

master process offlon;

#是否开启 Nqinx 的 master woker 工作模式,仅用于开发调试场景。

image.png

events { #事件模型配置参数

worker_ connections 65536; #设置单个工作进程的最大并发连接数

use epoll; #使用 epol1事件驱动, Nginx 支持众多的事件驱动,比如 select. poll、 epoll, 只能设置在 events 模块中设置。

(间隔的内部实现取决于所使用的方法:

●所述 EVFILT_ TIMER 如果滤波器 kqueue 被使用;

●timer_ create() 如果 eventport 使用:

●setitimer() 除此以外。

句法: use method;

默认: .

内容: events

指定要使用的连接处理 method,通常不需要显式地指定它,因为默认情况下 nginx 将使用最有效的方法。

句法: user user [groupl;

默认:用户无人无人;

内容: main

定义 user 和 group 凭证由工作进程中。如果 group 省略 if, user 则使用名称等于的组。

句法: worker aio_ requests number;

默认: worker aio requests 32;

内容: events

该指令出现在1.14和1.0.7版本中。

accept_ mutex on; W优化同- -时刻只有-个请求而避免多个睡眠进程被唤醒的设置,on 为防止被同时唤醒默认为 off,全部唤醒的过程也成为“惊群”,因此 nginx 刚安装完以后要进行适当的优化。

multi_ accept on;

Nginx 服务 器的每个工作进程可以同时接受多个新的网络连接,但是需要在配置文件中配置,此指令默认为关闭,即默认为一个工作进程只能一次接受- 一个新的网络连接, 打开后几个同时接受多个。

}

(如果 multi accept 被禁用,则辅助进程将- -次接受- 一个新连接。否则,辅助进程将- -次接受所有 新连接。

如果使用 kqueue 连接处理方法,该指令将被忽略,因为该指令报告等待接受的新连接数。

句法: pcre_ jit on | off;

默认: pcre jit 关闭;

2、 http 详细配置:

http {

include

mime.types; #导入支持的文件类型

default_ type applicat ion/octet-stream;设置默认的类型,会提示下载不匹配的类型文件

#日志配置部分

#1og format main 'Sremote_ addr。$remote. user [$time_ 1ocal] "Srequest"'

#

'Sstatus Sbody bytes_ sent "Shttp. referer"'

#

"Shttp. user. agent" "Shttp. x forwarded. for"';

waccess_ 1og 1ogs/access.1og main;

#自定义优化参数

sendfil

on;实现文件零拷贝

#tcp. nosh

on; #在开启了 sendfile 的情况下, 合并请求后统一发送给客户端。

#tcp. nodelay off; #在开启了 keepalived 模式下的连接是否启用 TCP_ NODELAY 选项, 当为 off 时,延迟0.2s 发送,默认0n 时,不延迟发送,立即发送用户相应报文。

(名用或禁用该 TCP NODELAY 选项的使所。当连接转换为保持活动状态时,将启用该选项。此外,它在 SSL 连接,

无缓冲代理和 WebSocker 代理上启用。

句法: tcp_ nopush on I off;

默认:

tcp nopush off;

内容:

http, server, location !

#keepalive_ timeout 0;

keepalive_ timeout 65 65; #设置 会话保持时间

wgzip on; 开启文件压缩

server {

listen

80; #设置监听地址和端口

server. name localhost; #设置 server name, 可以以空格隔开写多个并支持正则表达式,

* . magedu.com www . magedu." www. (site\d+)\. magedu\.com$ default_ server

Hcharset koi8-r; #设置编码格式,默认是俄语格式,可以改为 utf-8

(设置虚拟服务器的名称,例如:

服务器{

server. nane exanple.com www.example.com;

名字将成为主服务器名称。

服务器名称可以包含- -个星号(°") ,以替换名称的第一部分或最后一部分:

服务器{

server. nane exanple.com * . example.com www.example. *;

|)

这样的名称称为通配符名称。

上面提到的前两个名称可以合并为-个:

服务器{

server. nane .example.com;

也可以在服务器名称中使用正则表达式,在名称前加上波浪号("-) :

服务器{

server_ nane ww. exanple.com~^ ww \ d + \。example \ .com $;

#access_ log logs/host .access.1og main;  

location / {

root

html;

index index .html index .htm;

}

#error page 404

/404.html;

# redirect server error pages to the static page /50x .html

error_ page

500 502 503 504 /50x.html; #定义错误页面

location = /50x.html {

root

html;

}

样proxy the PHP scripts to Apache listening on 127.0.0.1: 80

#

#location一\.php$ { #以http的方式转发php请求到指定web服务器

proxy_ pass http://127.0.0.1;

#}

# pass the PHP scripts to FastCGI server listening on 127.0.0.1: 9000

#

#location一\.php$ { #以fastcg1的方式转发php请求到php处理

root

html;

#

fastcgi_ pass

127.0.0.1:9000;

#

fastcg1_ index index .php;

fastcg1 param SCRIPT FILENANE /scriptsSfastcg1 script. name;

include

fastcgi_ params;

#}

deny access to .htaccess files, if Apache's document root

# concurs with nginx's one

#

Wlocation-/\.ht {拒绝 web 形式访问指定文件,如很多的网站都是通过.htaccess 文件来改变自己

的重定向等功能。

I

#

deny all;

}

location一/passwd .html {

deny all;

}

# another virtual host using mix of IP-, name-, and port - based configuration

Nserver { 自定义虚拟 server

# listen ;

8000;

#

listen

somenane : 8080;

server_ name

somenane

alias

another .alias;

#

location 1 {

root

html;

index index.html index.htm; #指定默认网页文件,此指令由 ngx. _http. index. module 模块提供

#}

#

# HTTPS server

#server { #https服务器配置

#

listen

443 ssl;

#

server. name localhost;

#

ssl_ certificate

cert. pem;

ssl. certificate_ key cert. key;

#

ssl_ session. cache

shared:SsL:1m;

#

ssl session. .timeout 5m;

#

ssl ciphers HIGH: !aNULl: !MD5;

#

ssl_ prefer_ server ciphers on;

#

location / {

root

html;

#

index

index.html index 。htm;

}

location /1inux38/passwd.ht {

deny all;

}

#}

3、全局配置

user nginx nginx; 启动 Nginx 工作进程的用户和组

worker_ processes [number| auto]; #启动 Nginx 工作进程的数量

worker. .cpu. affinity 00000011 0000010 0000100 0000100; #将 Nginx工作进程绑定到指定的 CPU 核心,默认 Nginx 是不进行进程绑定的,绑定并不是意味着当前 nginx 进程独占以一-核心 CPU,但是可以保证此进程不会运行在其他核心上,这就极大减少了 nginx 的工作进程在不同的 cpu 核心上的来回跳转,减少了CPU 对进程的资源分配与回收以及内存管理等,因此可以有效的提升 nginx 服务器的性能。

[root@s2 -]#ps axo pid, cmd, psr,user I grep nginx

4106]nginx: master process /apps

1 root

4181 nginx: worker process

θ nginx

4182 nginx: worker process

1 nginx

4184 grep --color=auto nginx

θ root

#错误日志记录配置,语法: error. 1og file [debug 1 info 1 notice 1 warn 1 error 1 crit|

alertI emerg]

Herror. .1og logs/error .10g;

#error_ 1og logs/error .1og notice;  

error_ 1og /apps/nginx/logs/error .1og error;

#pid 文件保存路径

pid

/apps/nginx/logs/nginx. pid;

worker_ priority θ; #工作进程 nice 值,-20-19

worker_ rlimit_ nofile 65536; #这个数字包括 Nginx 的所有连接(例如与代理服务器的连接等),而不仅仅是与客户端的连接,另一 个考虑因素是实际的并发连接数不能超过系统级别的最大打开文件数的限制,

[root@s2 -]# watch -n1 'ps -axo pid, cmd,nice 1 grep nginx' #验证进程优先级

daemon off;前台运行 Nginx 服务用于测试、 docker 等环境。

master. process offlon; #是否开启 Nginx 的 master woker 工作模式,仅用于开发调试场景。

events {事件模型配置参数

worker. .connections 65536; #设置单个工作进程的最大并发连接数

use epoll; #使用 epoll 事件驱动,Nginx 支持众多的事件驱动,比如 select. poll. epoll,只能设置在 events 模块中设置。

accept. mutex on; #优化同- -时刻只有-个请求而避免多个睡眠进程被唤醒的设置,on 为防止被同时唤醒默认为 off,全部唤醒的过程也成为“惊群”,因此 nginx 刚安装完以后要进行适当的优化。

multi_ accept on; Nginx 服务器的每个工作进程可以同时接受多个新的网络连接,但是需要在配置文件中配置,此指令默认为关闭,即默认为一个工作进程只能一次接受一个新的网络连接,打开后几个同时接受多个。

相关文章
|
1月前
|
Kubernetes 应用服务中间件 nginx
k8s学习--YAML资源清单文件托管服务nginx
k8s学习--YAML资源清单文件托管服务nginx
k8s学习--YAML资源清单文件托管服务nginx
|
24天前
|
JavaScript 前端开发 应用服务中间件
vue前端开发中,通过vue.config.js配置和nginx配置,实现多个入口文件的实现方法
vue前端开发中,通过vue.config.js配置和nginx配置,实现多个入口文件的实现方法
119 0
|
3月前
|
JavaScript 应用服务中间件 PHP
nginx server 禁止特定目录下的某类文件访问
【8月更文挑战第26天】这段Nginx配置代码旨在保护`/uploads/`目录下的文件,禁止执行任何`.php`, `.html`, `.htm`, 或 `.js`等潜在有害文件,即便被访问也无法运行。取而代之的是重定向到首页。为了实现这一设置,用户需要定位到对应子域名的`.conf`配置文件中进行相应修改。若网站支持多个访问域名,则需确保在正确的`.conf`文件中实施此配置。
84 1
|
3月前
|
存储 监控 应用服务中间件
查看nginx日志文件
器性能和提高网站可用性。掌握日志文件的路径、查看方法和基本分析技能对于任何服务器管理员来说都是必备技能。
126 1
|
3月前
|
应用服务中间件 Linux nginx
Nginx log 日志文件较大,按日期生成 实现日志的切割
Nginx log 日志文件较大,按日期生成 实现日志的切割
630 0
|
4月前
|
存储 网络协议 应用服务中间件
nginx文件夹内文件解释<六>
nginx文件夹内文件解释<六>
38 3
|
4月前
|
JSON 前端开发 应用服务中间件
nginx文件夹内文件解释<五>
nginx文件夹内文件解释<五>
34 3
|
4月前
|
应用服务中间件 nginx Ruby
nginx文件夹内文件解释<七>
nginx文件夹内文件解释<七>
39 2
|
4月前
|
缓存 应用服务中间件 开发工具
Ngnix配置文件nginx.conf的文件结构
Ngnix配置文件nginx.conf的文件结构
|
4月前
|
应用服务中间件 nginx
nginx文件夹内文件解释<八>
nginx文件夹内文件解释<八>
179 0