因为Nginx的配置文件配置参数有很多,本篇文章只能粗略的放出部分配置参数文件
Nginx主配置文件详解
Nginx主配置文件默认位置为
/etc/nginx/nginx.conf
一般情况下默认编译的位置在上面的路径内,非刻意修改位置路径不变(修改方法为编译的时候设定编译位置)
主配置文件结构
#全局块
worker_processes 1;
#events块
events {
worker_connections 1024;
}
#http块
http {
#http全局块
upstream {
#upstream块
}
server {
#server块(网站配置文件块)
location / {
#location块
}
}
}
stream {
#stream块
upstream {
#upstream块
}
}
上面配置文件的解读
全局块
全局块通常配置Nginx运行用户或者用户组,Nginx的进程和PID存放位置,日志的存放位置
events块
一般情况下能限制多worker process接收多个网络连接,这部分一般不做设置,任何配置问题可能会影响到Nginx的服务器整体性能,一般由服务器默认设置即刻。
http块
http块是Nginx配置文件中间最重要的部分,整个Nginx下面的http服务都在http块下面;http块下面可以包括http全局块,用于启用插件,引用外部文件;本区域server块可以通过include引用当前目录下conf.d目录下的参数配置文件,引用的语法为 include /etc/nginx/conf.d/*.conf ,意思为引用conf.d目录下面的所有以.conf为后缀的文件;http块内不能包含stream块,stream块与http块同级。
http块配置参数
http
{
#文件扩展名与文件类型映射表
include mime.types;
#默认文件类型
default_type application/octet-stream;
#默认编码
charset utf-8;
#此选项允许或禁止使用socke的TCP_CORK的选项,此选项仅在使用sendfile的时候使用
tcp_nopush on;
tcp_nodelay on;
#长连接超时时间,默认单位是秒
keepalive_timeout 120;
#FastCGI相关参数配置网站性能,一般搭配fastcgi模块使用,例如PHP
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
fastcgi_buffer_size 64k;
fastcgi_buffers 4 64k;
fastcgi_busy_buffers_size 128k;
fastcgi_temp_file_write_size 128k;
#gzip模块设置,需要Nginx在安装的时候有编译gzip模块
gzip on; #开启gzip压缩输出
gzip_min_length 1k; #最小压缩文件大小
gzip_buffers 4 16k; #压缩缓冲区
gzip_http_version 1.0; #压缩版本(默认1.1,前端如果是squid2.5请使用1.0)
gzip_comp_level 2; #压缩等级
gzip_types text/plain application/x-javascript text/css application/xml; #压缩类型,默认就已经包含textml,所以下面就不用再写了,写上去也不会有问题,但是会有一个warn。
gzip_vary on;
#限制一个IP的连接数
limit_zone crawler $binary_remote_addr 10m;
#设置上传的文件大小
client_max_body_size 8m;
#允许访问目录
autoindex on;
#客户请求头缓冲大小
large_client_header_buffers 4 64k;
}
server块
server块就和虚拟主机有关系了,一般为网站的配置文件,可以用在域名隔离网站的情况下,特征是在http块下可以无限设置数量;server块下面主要用于正常的http第七层服务,内包含location块,server块基本语法如下
listen [port | ip | ip:port | localhost]
#解释,上面的port可指定自定义端口,ip为监听地址,不指定端口默认监听该IP地址的80端口,ip:port为自定义监听该地址的端口,localhost一般情况下为监听127.0.0.1的80端口,可以为localhost:80的方式监听端口
server_name [ip | domain | _]
#解释,上面的server_name可以表示网站空间为单个IP地址,或者多个地址,或者是多个域名;_下划线为表示该网站空间没有名称,即访问该网站不需要任何标识都可以访问。
location [ = | ~ | ~* | ^~ ] uri { ... }
#解释,具体用途看前面单独讲location的文章
#允许客户端请求的最大单文件字节数
client_max_body_size 10m;
#高负载下缓冲区大小
proxy_busy_buffers_size 64k;
upstream块
upstream [upstream_name]
#解释,upstream为网站http负载集群使用,可以包含在stream块里面做第四层负载集群使用。
#基本语法
upstream stream_name {
[ip_hash | url_hash |least_conn | least_time]
server [ip | domain | localhost]:port [type]
}
#其中type为负载参数,用于标识服务器权重,和服务器状态,基本使用方法如下
#weight 权重参数
#down 不请求该服务器
#backup 备份服务器
#max-fails 标记不可用超时次数
#fail_timeout 标记超时时间,与上方超时次数对应,超过次数后自动标记down状态
#max-conns 节点允许最大连接数当该节点达到规定数值,其他请求会被转移到其他服务器
#slow-start 节点恢复访问时,不立刻加入集群
#---------------------------------------
#解释[ip_hash | url_hash | least_conn | least_time]的使用区别
#ip_hash 用于动态网站,基于hash计算,保持session的一致
#url_hash 静态资源缓存,加速
#least_conn 优先访问当前网站访问量最小的
#least_time 优先访问最快响应速度的服务器
stream块
stream块可以嵌套upstream块,stream块的主要参数
listen 监听端口
preread_buffer_size 设置每个会话数据预读缓冲区的大小
preread_timeout 设置每个会话数据预读取的超时时间
proxy_protocol_timeout 读取代理协议头的超时时间
resolver 域名解析服务器地址
resolver_timeout 域名解析超时时间
tcp_nodelay 启用或关闭立即发送数据(tcp_nodelay)选项
variables_hash_bucket_size 设置变量哈希表中桶的大小
variables_hash_max_size 设置变量哈希表的最大值
---------------分割---------------
上面参数注意部分;
listen可以监听UDP端口,监听格式
listen [port] udp;
stream里面不可以使用server_name参数,server_name参数仅在第七层服务中间有效,stream为第四层协议,自然server_name参数无效
upstream 在stream里面使用的时候可以使用的格式
server [domain | ip | static_host]:port [type]
上格式解读,在stream里面可以使用与http块内upstream一样的权重参数,服务器标记参数以及备份参数
stream块可以用来当端口转发服务使用,仅支持纯TCP/UDP的服务使用,使用到GRE协议或者更低例如 第三层协议PPTP(GRE),IGMP,IPsec,OpenVPN等,以及第二层协议L2TP(第二层链路封装协议)ikev2,ikev3,以及各种路由协议,均不能通过Nginx的TCP/UDP代理模块代理。
解释:Nginx的TCP/UDP代理仅支持第四层以及第四层以上的第五层,第六层,以及第七层的协议,在OSI模型中间,规定只有层数低的协议可以代理层数高的协议或者同级的协议,TCP和UDP属于第四层,基于第三层的基础之上,所以Nginx自然不能代理第三层的协议,或者更低的协议;但是SOCKS工作在第四层,所以可以使用Nginx的第四层代理SOCKS的协议。
评论