查看nginx配置文件分类
主配置文件:
nginx.conf
include conf.d/*.conf
fascgi uwsgi scgi 等协议相关配置文件
nginx.conf文件结构
主配置文件结构:
main block;#全局块配置全局生效 event{ #事件驱动相关配置 } http{ #http/https协议相关配置段 server { ... }:#每个server用于定义一个虚拟主机; server { ... server_name root alias location [OPERATOR] URL { ... if CONDITION { ... } } } } stream{ #tcp协议配置段 }
1.全局块
全局块主默认的配置文件从开始到event块之间的的一部分内容,主要设置影响Nginx整个配置指令,影响全局;
2.event块
event块主要涉及到的指令用于响应nginx服务器与用户的网络连接,常用于配置时间驱动等模块信息;
3.http块
http块是nginx配置文件中最为重要的块,http自己的全局块,包括大多数第三方模块配置也可以添加到这个模块中,server块也可以包含在这个快中,
4.server块主要定义虚拟主机
5.location块
每个server块中可以包含多个location块,location块主要用于nginx服务器接收来自客户端的请求的URL字符串进行匹配处理,nginx许多功能都是在此进行配置的。
正常运行的配置:
http实例配置
user nobody; pid /var/log/nginx/nginx.pid; worker_processes auto; worker_rlimit_nofile 1024; master_process on; error_log /var/log/nginx/error.log; -------------------------------------------------------------------------------------------------------------------------- events { worker_connections 1024; use epoll; accept_mutex on; } -------------------------------------------------------------------------------------------------------------------------- http{ include mime.types; default_type application/octet-stream; keepalive_timeout 65; gzip on; server { listen 80; server_name app.liaoxz.com; root /usr/local/nginx/html/app/; index index.html index.htm; } server { listen 8090; server_name abb.liaoxz.com; root /usr/local/nginx/html/abb/; index index.html; } }
1.cpu相关配置
1.设置worker process 数
worker process是nginx实现高并发的主要关键配置,这个建议与cpu核心数一致,
配置work proccess的语法格式:
worker_processes number;
2.worker_cpu_affinity cpumask ...;
worker_cpu_affinity auto [cpumask];
将worker进程与cpu进行绑定(绑定之后来自同一worker个进程的请求就会直接使用当前所绑定所指定的cpu)
建议设置成auto,auto表示在服务启动时就将worker进程与之绑定。
用户及进程相关
1.user uesr [group]
设置工作进程所使用的用户或组
2.pid /PATH/TO/PID_FILE;
指定存储nginx主进程进程号码的文件路径;
3.worker_priority number;
指定worker进程的nice值,设定worker进程优先级;[-20,20]
4.worker_rlimit_nofile number;
worker进程所能够打开的文件数量上限;
5.master_process on |off;
是否以master/worker模型运行nginx
4.include file | mask;
指明包含进来的其它配置文件片断;
5.load_module file;
指明要装载的动态模块;
事件驱动相关配置
events{
1)worker_cnnections number;
每个worker进程所能打开的最大并发连接数
2)use method epoll|select|poll;
指明并发连接请求的处理方法;
建议使用epoll
use epoll;
3)accept_mutex on |off;
处理新的连接请求方法;on意味着由各worker轮流处理新请求,off意味着每个新的请求会通知所有的worker进程
}
Nginx Gzip压缩
使用模块 ngx_http_gzip_module
http://nginx.org/en/docs/http/ngx_http_gzip_module.html
1.Syntax: gzip on | off;
Default:
gzip off;
Context: http, server, location, if in location
默认是off,不启动Gzip功能,设置为on为生效
2.Syntax: gzip_buffers number size;
Default:
gzip_buffers 32 4k|16 8k;
Context: http, server, location
用于指定缓冲区数量及每个缓存区的大小
number 缓冲区数量
size 缓存区大小
3。Syntax: gzip_comp_level level;
Default:
gzip_comp_level 1;
Context: http, server, location
指定压缩程度数字越高表示压缩效率越高,但是占用系统资源,建议适当设置
4.Syntax: gzip_disable regex ...;
Default: —
Context: http, server, location
This directive appeared in version 0.6.23.
针对不同类型客户端进行选择是否开启gzip功能
regex 表示浏览器类型 支持使用正则表达式
IE浏览器 MSIE [6-10]\;
5.Syntax: gzip_types mime-type ...;
Default:
gzip_types text/html;
Context: http, server, location
压缩过滤器,仅对此处设定的MIME类型的内容启用压缩功能;
6.Syntax: gzip_proxied off | expired | no-cache | no-store | private | no_last_modified | no_etag | auth | any ...;
Default:
gzip_proxied off;
Context: http, server, location
Enables or disables gzipping of responses for proxied requests depending on the request and response. The fact that the request is proxied is determined by the presence of the “Via” request header field. The directive accepts multiple parameters:
off
disables compression for all proxied requests, ignoring other parameters;
expired
enables compression if a response header includes the “Expires” field with a value that disables caching;
no-cache
enables compression if a response header includes the “Cache-Control” field with the “no-cache” parameter;
no-store
enables compression if a response header includes the “Cache-Control” field with the “no-store” parameter;
private
enables compression if a response header includes the “Cache-Control” field with the “private” parameter;
no_last_modified
enables compression if a response header does not include the “Last-Modified” field;
no_etag
enables compression if a response header does not include the “ETag” field;
auth
enables compression if a request header includes the “Authorization” field;
any
enables compression for all proxied requests.
nginx作为代理服务器接收到从被代理服务器发送的响应报文后,在何种条件下启用压缩功能的;
off:对代理的请求不启用
no-cache, no-store,private:表示从被代理服务器收到的响应报文首部的Cache-Control的值为此三者中任何一个,则启用压缩功能;
其他相关请查阅的官方文档http://nginx.org/en/docs/http/ngx_http_gzip_module.html#gzip_disable
http{
include mime.types;
default_type application/octet-stream;
keepalive_timeout 65;
gzip on;
gzip_comp_level 4;
gzip_disable MISE [4-6]\;
gzip_buffers 32 4k;
}
nginx rewrite功能配置
Rewrite 是nginx提供的一个重要功能,其在web服务器中必然会使用到的指令,例如在网站结构更改后,客户端任可以使用之前使用的URL来进行访问等操作,实现URL替换功能;
Rewrite功能是由ngx_http_rewrite_module模块提供;
1、rewrite regex replacement [flag]
将用户请求的URI基于regex所描述的模式进行检查,匹配到时将其替换为replacement指定的新的URI;
注意:如果在同一级配置块中存在多个rewrite规则,那么会自下而下逐个检查;被某条件规则替换完成后,会重新一轮的替换检查,因此,隐含有循环机制;[flag]所表示的标志位用于控制此循环机制;
如果replacement是以http://或https://开头,则替换结果会直接以重向返回给客户端;
301:永久重定向;
[flag]:
last:重写完成后停止对当前URI在当前location中后续的其它重写操作,而后对新的URI启动新一轮重写检查;提前重启新一轮循环;
break:重写完成后停止对当前URI在当前location中后续的其它重写操作,而后直接跳转至重写规则配置块之后的其它配置;结束循环;
redirect:重写完成后以临时重定向方式直接返回重写后生成的新URI给客户端,由客户端重新发起请求;不能以http://或https://开头;
permanent:重写完成后以永久重定向方式直接返回重写后生成的新URI给客户端,由客户端重新发起请求;
location / {
rewrite ^/ http://abb.liaoxz.com/abb;
root html;
index index.html index.htm;
}
2.if (condition) { ... }
引入一个新的配置上下文 ;条件满足时,执行配置块中的配置指令;server, location;
condition:
比较操作符:
==
!=
~:模式匹配,区分字符大小写;
~*:模式匹配,不区分字符大小写;
!~:模式不匹配,区分字符大小写;
!~*:模式不匹配,不区分字符大小写;
文件及目录存在性判断:
-e, !-e
-f, !-f
-d, !-d
-x, !-x
3.return
return code [text];
return code URL;
return URL;
Stops processing and returns the specified code to a client.
停止处理并将指定的代码返回给客户端。 非标准代码444关闭连接而不发送响应报头。
4. rewrite_log on | off;
是否开启重写日志;
5.set $variable value;
用户自定义变量