Nginx配置文件参数部分详解

Nginx配置文件参数部分详解

dkm
dkm
2023-01-08 / 0 评论 / 25 阅读 / 正在检测是否收录...

因为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的协议。

0

评论

博主关闭了所有页面的评论