当前位置: 首页 > article >正文

Ubuntu环境 nginx.conf详解(二)

1、nginx.conf 结构详解:

http 块:用于配置 HTTP 服务器的相关设置,包括处理 HTTP 和 HTTPS。

stream 块:用于配置 TCP/UDP 代理服务器,适用于需要进行四层负载均衡的情况。

...            # 全局块
events {...}   # events块
http {						  # http块
   ...   					  # http全局块
   server { 					  # server块
     ...       				  # server全局块
     location [PATTERN] {...}  # location块
     location [PATTERN] {...}  # location块
   }
   server { ... } 			  # server块
}

stream {				      # stream块

   server { ... } 			  # server块
}

2、详细nginx.conf详解:

1、全局块:

#定义 用户和用户组,默认为 nobody,若配置为 user nobody nobody, 则所有用户都能启动 nginx 进程
user myUsr myGroup;

# 工作进程数可设置为CPU的核心数
worker_processes  1;

# 进程文件路径
pid /user/local/nginx/nginx.pid;

# 日志路径和日志级别,日志级别有:debug|info|notice|warn|error|crit|alert|emerg;
error_log logs/error.log debug;

2、events 块:

events {
	# 设置网路连接序列化是为了防止惊群现象发生,默认为 on;
	accept_mutex on;
	
	# 是否同时接受多个网络连接指令默认值为 off;
	multi_accept on;
	
	# 事件驱动模型的可选项有:select|poll|kqueue|epoll|resig|/dev/poll|eventport;
	use epoll;
	
	# 最大连接数
	worker_connections  1024;
}

 3、http 全局块:

子模块相同配置,可统一配置在 http全局 中。

http {
	# 文件扩展名与文件类型映射表在 nginx/conf 下
	include mime.types;
	
	# 默认文件类型的默认值为 text/plain;
	default_type  application/octet-stream;
	
	# 是否开启服务日志的默认值为 on,开启了之后需要配置 access_log 路径;
	access_log off;
	
	# 自定义服务日志格式
	log_format myLogFormat '$remote_addr–$remote_user [$time_local] $request $status $body_bytes_sent $http_referer $http_user_agent $http_x_forwarded_for';
	
	# 设置日志的格式
	access_log log/access.log myLogFormat;
	
	# sendfile 指令指定 nginx 是否调用 sendfile 函数来输出文件,减少用户空间到内核空间的上下文切换;对于普通应用设为 on,如果用来进行下载等应用磁盘 IO 重负载应用,可设置为 off,以平衡磁盘与网络 I/O 处理速度,降低系统的负载;
	sendfile on;
	
	# 每个进程每次最大传输值,指令的默认为 0,表示不设上限;
	sendfile_max_chunk 100k;
	
	# 长连接超时时间,单位是秒,这个参数很敏感,涉及浏览器的种类、后端服务器的超时设置、操作系统的设置;长连接在请求大量小文件的时候,可以减少重建连接的开销;但如果上传大文件时在设置的超时时间内没上传完成会导致失败,如果设置时间过长,用户又多,长时间保持连接会占用大量资源;
	keeplive_timeout 100;
	
	# 响应客户端的超时时间,仅限于两个连接活动之间的时间,如果超过这个时间,客户端没有任何活动,Nginx将会关闭连接;
	send_timeout 75;
	
	# 客户端请求头的区缓冲区大小,为避免请求 header 过大出现 400 错误,可以适当设置大一点;
	client_header_buffer_size 32k;
	
	# 客户端请求头的最大缓冲区数量和大小,为避免请求 header 过大出现 400 错误,可以适当设置大一点;
	large_client_header_buffers 8 32k;
	
	# 允许客户端请求的最大字节数,为避免请求 header 过大出现 400 错误,可以适当设置大一点;
	client_max_body_size  10m;
	
	# 客户端请求体的缓冲区大小,为避免请求 header 过大出现 400 错误,可以适当设置大一点;
	client_body_buffer_size  128k;

    # 配置 https_proxy 反向代理,配置如下:

    # 表示 Nginx 跟代理服务器连接超时时间
    proxy_connect_timeout  75;

    # 表示 Nginx 与代理服务器两个成功的响应操作之间超时时间;
    proxy_read_timeout  75;

    # 表示 Nginx 传输文件至代理服务器的超时时间;
    proxy_send_timeout 100;

    # 用于设置从代理服务器读取并保存用户头信息的缓冲区大小;
    proxy_buffer_size  4k;

    # 设置代理缓冲区大小,Nginx 针对单个连接,缓存来自代理服务器的响应,网页平均在32k以下的话,可以设置为 4 32K ;
    proxy_buffers  4  32k;

    # 设置高负荷下的缓冲大小,一般为 proxy_buffers 的两倍;
    proxy_busy_buffers_size  64k;

    # 当 proxy_buffers 放不下后端服务器的响应内容时,会将一部分保存到硬盘的临时文件中,这个值用来设置最大临时文件大小,默认1024M,它与 proxy_cache 没有关系;大于这个值,将从 upstream 服务器传回,设置为 0 禁用;
    proxy_max_temp_file_size  64k;

    # 当缓存被代理的服务器响应到临时文件时,这个选项限制每次写临时文件的大小;
    proxy_temp_file_write_size 64k;

    # 用于指定临时文件所在的目录;
    proxy_temp_path  proxy_temp;


}

4、反向代理统一配置:

# 配置 https_proxy 反向代理,配置如下:

http {
	...

    # 表示 Nginx 跟代理服务器连接超时时间
    proxy_connect_timeout  75;

    # 表示 Nginx 与代理服务器两个成功的响应操作之间超时时间;
    proxy_read_timeout  75;

    # 表示 Nginx 传输文件至代理服务器的超时时间;
    proxy_send_timeout 100;

    # 用于设置从代理服务器读取并保存用户头信息的缓冲区大小;
    proxy_buffer_size  4k;

    # 设置代理缓冲区大小,Nginx 针对单个连接,缓存来自代理服务器的响应,网页平均在32k以下的话,可以设置为 4 32K ;
    proxy_buffers  4  32k;

    # 设置高负荷下的缓冲大小,一般为 proxy_buffers 的两倍;
    proxy_busy_buffers_size  64k;

    # 当 proxy_buffers 放不下后端服务器的响应内容时,会将一部分保存到硬盘的临时文件中,这个值用来设置最大临时文件大小,默认1024M,它与 proxy_cache 没有关系;大于这个值,将从 upstream 服务器传回,设置为 0 禁用;
    proxy_max_temp_file_size  64k;

    # 当缓存被代理的服务器响应到临时文件时,这个选项限制每次写临时文件的大小;
    proxy_temp_file_write_size 64k;

    # 用于指定临时文件所在的目录;
    proxy_temp_path  proxy_temp;

    ...
}

5、http_gzip 模块配置:

http {
    ...

    # 如果设置为 on 则表示开启 gzip 压缩输出,可减少网络传输;
    gzip on;

    # 设置允许压缩的页面最小字节数(到达这个大小才进行压缩),页面字节数从 header 头的 content-length 中进行获取。默认值是 20。建议设置成大于 1k 的字节数,小于 1k 可能会越压越大;

    gzip_min_length 1K;
    # 设置系统获取多少个单位的缓存用于存储 gzip 的压缩结果数据流,4 16k 表示按照原始数据大小以 16k 为单位的 4 倍进行内存申请;
    gzip_buffers  4  16k;

    # 设置 http 协议的版本,早期的浏览器不支持 Gzip 压缩,用户就会看到乱码,所以为了支持前期版本加上了这个选项;如果你用了 Nginx 的反向代理并启用 Gzip 压缩的话就需要加上,而由于末端通信是 http/1.0,故请设置为 1.0;
    gzip_http_version 1.0;

    # zip 压缩比,为 1 时,压缩比最小处理速度最快;为 9 时,压缩比最大但处理速度最慢;
    gzip_comp_level 6;

    # 匹配 mime 类型进行压缩,无论是否指定,text/html 类型总是会被压缩的;
    gzip_types text/plain text/css application/json;
    # 配置开启或者关闭后端服务器返回的结果是否压缩,Nginx 作为反向代理的时候启用,匹配的前提是后端服务器必须要返回包含 Via 的 header头;
    gzip_proxied any;
    # 配置和 http 头有关系,会在响应头加个 Vary: Accept-Encoding ,可以让前端的缓存服务器缓存经过 gzip 压缩的页面,例如:用 Squid 缓存经过 Nginx 压缩的数据;
    gzip_vray on;

    ...
}

6、负载均衡后台服务器(http中配置):

http {
    ...

    upstream backend {
	    server 192.168.56.10:8080 max_fails=2 fail_timeout=30s backup; # 热备
	    server 192.168.56.11:8080 max_fails=2 fail_timeout=30s;
    }

    ...
}

7、配置 TCP/UDP 代理服务器:

stream {

    # 负载均衡后台服务器
    upstream backend {
        server backend1.example.com:9000 max_fails=2 fail_timeout=30s backup; # 热备;
        server backend2.example.com:9000;
        # 可以添加更多服务器
        ... 
    }

    # server 定义了监听的地址和端口,并指定如何将连接转发到后端服务器。
    server {
        # 端口
        listen 80;

        location / {
            # 地址
            proxy_pass http://backend;
            # 其他代理设置
            ...
        }
    }
}


http://www.kler.cn/a/452174.html

相关文章:

  • FFmpeg在python里推流被处理过的视频流
  • 追风赶月莫停留,平芜尽处是春山—记一次备考经历(下)
  • vue中proxy代理配置(测试一)
  • Mybatis 小结
  • Odoo 免费开源 ERP:通过 JavaScript 创建对话框窗口的技术实践分享
  • 007-spring-bean的相关配置(重要)
  • torch.nn.init 模块介绍
  • CSS基础-长度单位
  • golang LeetCode 热题 100(哈希)
  • 【zookeeper核心源码解析】第二课:俯瞰QuorumPeer启动核心流程,实现选举关键流程
  • UI自动化测试实战实例
  • debian 编译openwrt
  • idea集合git使用
  • 单片机:实现LED亮度等级控制(附带源码)
  • Zookeeper常见面试题解析
  • Docker 快速搭建 GBase 8s数据库服务
  • 重温设计模式--6、享元模式
  • Android蓝牙通信
  • VR 动感单车身心调适系统的功能与作用
  • 前端 MYTED单篇TED词汇学习功能优化
  • Leetcode 695 Max Area of Island
  • Logback日志框架中的继承机制详解
  • 学习postman工具使用
  • 头歌-机器学习在 NLP 中的实战
  • Github 2024-12-25C开源项目日报 Top8
  • HTTP 协议、AJAX - 异步网络请求及跨域、同源策略