nginx 配置案例
案例 1
#user nobody; # 运行用户(启动者用户名),默认即是nginx,可以不进行设置
worker_processes 4;#工作进程数,一般和CPU数量相同
worker_rlimit_nofile 10240; #配置Nginx worker进程最大打开文件数
error_log /home/work/nginx/logs/error_log notice; # Nginx 的错误日志存放目录
pid /home/work/nginx/var/nginx.pid; # Nginx 服务启动时的 pid 存放位置
events {
use epoll;# 工作模型:使用epoll的I/O模型(如果你不设置、不知道Nginx该使用哪种轮询方法,会自动选择一个最适合你操作系统的)
worker_connections 10240; #单个进程允许的客户端最大连接数 | 并发数(打开的文件数限制)
}
# 配置使用最频繁的部分,代理、缓存、日志定义等绝大多数功能和第三方模块的配置都在这里设置
http {
include mime.types; # 文件扩展名与类型映射表
default_type application/octet-stream; # 默认文件类型 二进制流
ignore_invalid_headers off; # 忽略不合法的http头部
# 设置日志模式
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" "$http_user_agent" '
'$request_time $http_x_bd_logid $http_x_bd_routerip $server_addr $upstream_addr $host '
'"$http_x_forwarded_for" $msec';
access_log "/home/work/nginx/logs/access_log" main; # 指定写入的文件名和日志格式
client_body_temp_path /home/work/nginx/cache/client_body;# 设置用于存储包含客户端请求正文的临时文件的目录
proxy_temp_path /home/work/nginx/cache/proxy; # 定义proxy的临时文件存在目录以及目录的层级。
uwsgi_temp_path /home/work/nginx/cache/uwsgi;# 用于存储带有从 uwsgi 服务器接收到的数据的临时文件
scgi_temp_path /home/work/nginx/cache/scgi;#存储包含从 SCGI 服务器接收到的数据的临时文件
fastcgi_temp_path /home/work/nginx/cache/fastcgi; #fastcgi临时文件存放路径
#用于设置服务器名的哈希桶大小,用于提高服务器名的查找速度。该参数的值越大,哈希桶的数量越多,查找速度也越快,但是需要消耗更多的内存。默认值为 32,可以根据实际情况适当调整。
server_names_hash_bucket_size 128;
client_header_buffer_size 4k;#客户端请求头缓冲区的大小
large_client_header_buffers 4 32k;
client_max_body_size 4m; #限制请求体的大小,若超过所设定的大小,返回413错误。
client_body_buffer_size 513k; #设置客户端请求体缓冲区的大小
client_body_timeout 15;#用于设置客户端请求体(即请求的数据)超时时间
client_header_timeout 10; # 用于等待客户端发送HTTP请求头的时间
send_timeout 240; #客户端的响应超时时间
resolver xx.xxx.xxx.xxx; #设置公共的DNS或者公司内部的DNS都可以
sendfile on;# 开启高效传输模式
# 减少网络报文段的数量
tcp_nopush on;
tcp_nodelay on;
fastcgi_connect_timeout 5;#连接超时时间,默认60秒
fastcgi_send_timeout 10; #nginx 进程向 fastcgi 进程发送请求过程的超时时间,默认值60秒
fastcgi_read_timeout 10;# nginx 进程向 fastcgi 进程读取输出过程的超时时间,默认值60秒
#读取fastcgi应答第一部分需要多大缓冲区,该值表示使用1个64kb的缓冲区读取应答第一部分(应答头),可以设置为fastcgi_buffers选项缓冲区大小
fastcgi_buffer_size 64k;
#指定本地需要多少和多大的缓冲区来缓冲fastcgi应答请求,假设一个php或java脚本所产生页面大小为256kb,那么会为其分配4个64kb的缓冲来缓存;若页面大于256kb,那么大于的256kb的部分会缓存到fastcgi_temp指定路径中,这并非是个好办法,内存数据处理快于硬盘,一般该值应该为站点中php/java脚本所产生页面大小中间值,如果站点大部分脚本所产生的页面大小为256kb,那么可把值设置为16 16k,4 64k等
fastcgi_buffers 4 64k;
# 指定本地需要用多少和多大的缓冲区来缓冲FastCGI的应答。默认值是fastcgi_buffer的2倍
fastcgi_busy_buffers_size 128k;
#写入缓存文件使用多大的数据块,默认值是fastcgi_buffer的2倍
fastcgi_temp_file_write_size 128k;
#是否传递4xx和5xx错误信息到客户端
fastcgi_intercept_errors on;
keepalive_timeout 0;# 保持连接的时间,也叫超时时间,单位秒
#keepalive_timeout 65;
#压缩文件可以节约带宽和提高网络传输效率
gzip on; #开启gzip压缩
gzip_min_length 10k; #只压缩超过10K的文件
gzip_buffers 4 16k; #设置Gzip压缩文件使用缓存空间的大小
gzip_http_version 1.1;#启用gzip压缩所需的HTTP最低版本
gzip_comp_level 2; #压缩级别,压缩比率越高文件被压缩的体积越小 包括级别1到级别9
gzip_types text/plain application/x-javascript text/css application/xml;#进行压缩的文件类型
gzip_vary on;# 开启后的效果是在响应头部添加了Accept-Encoding: gzip
proxy_connect_timeout 15s;#默认超时时间
proxy_read_timeout 24s; # 读取超时
proxy_send_timeout 10s;# 发送超时
#Nginx使用该大小申请read_buf,用来存储upstream端response的header。 即大小指定了 upstream header 最大长度,如果响应头超过了这个长度,Nginx会报upstream sent too big header错误,然后client收到的是502。
proxy_buffer_size 64k;
#设置存储被代理服务器响应的body所占用的buffer个数和每个buffer大小。。总的大小为number*size
proxy_buffers 4 64k;
# proxy_busy_buffers_size不是独立的空间,他是proxy_buffers和proxy_buffer_size的一部分。
# 如果完整数据大小不小于busy_buffer大小,则装满busy_buffer后,马上传给客户端;
proxy_busy_buffers_size 128k;
#设置同时写入临时文件的数据量的总大小。通常设置为8k或者16k。
proxy_temp_file_write_size 128k;
proxy_set_header Host $http_host;
#charset GBK;
uninitialized_variable_warn off; #控制是否记录 有关未初始化变量的警告。
server {
# List port
listen 8080;
server_name baidu.com;
proxy_next_upstream_tries 2;#重试次数
proxy_redirect off; #重定向
location /service/ {
set $upstream 'baidu.com:8080';
proxy_pass http://$upstream;
}
location /sTokenBackendValidate {
set $upstream 'baidu.com:8080';
proxy_pass http://$upstream;
}
location / {
root /home/work/webroot/;
}
}
}
案例二
#COPY ./nginx.conf /etc/nginx/conf.d/
gzip on;
gzip_min_length 1k;
gzip_buffers 4 16k;
gzip_http_version 1.1;
gzip_comp_level 2;
gzip_types text/plain application/javascript application/x-javascript text/javascript text/css application/xml application/xml+rss;
gzip_vary on;
gzip_proxied expired no-cache no-store private auth;#Nginx做为反向代理的时候启用:
gzip_disable "MSIE [1-6]\."; #通过表达式,表明哪些UA头不使用gzip压缩
server
{
listen 8080;
#listen [::]:8080;
index index.html;
root /opt/run/dist;
location / {
try_files $uri $uri/ /index.html;
}
# 静态资源强缓存
location ~.*\.(css|js|jpg|png|gif|woff|woff2|eot|svg|ttf|otf|mp3|m4a|aac)$ {
expires 15d;
}
}
- client_body_buffer_size
client_body_buffer_size 是 Nginx 配置指令之一,用于设置客户端请求体缓冲区的大小。当客户端向 Nginx 发送请求时,请求体(例如 POST 请求中的表单数据)会被存储在缓冲区中,然后再传递给后端服务器进行处理。通过设置 client_body_buffer_size,可以控制缓冲区的大小,从而影响 Nginx 的性能和稳定性。默认情况下,client_body_buffer_size 的值为 8k。
- client_body_timeout
这是一个配置 nginx 的指令,用于设置客户端请求体(即请求的数据)超时时间。当客户端请求体的传输时间超过设定的超时时间时,nginx 会自动关闭连接。
- client_header_timeout
Client_header_timeout 通常是一个 HTTP 服务器设置的超时时间,用于等待客户端发送 HTTP 请求头的时间。如果在这个时间内没有收到请求头,HTTP 服务器将会关闭与客户端的连接。这个超时时间可以设置为不同的值来适应不同的情况。
- gzip_proxied
Nginx 做为反向代理的时候启用:
off – 关闭所有的代理结果数据压缩
expired – 如果 header 中包含”Expires”头信息,启用压缩
no-cache – 如果 header 中包含”Cache-Control:no-cache”头信息,启用压缩
no-store – 如果 header 中包含”Cache-Control:no-store”头信息,启用压缩
private – 如果 header 中包含”Cache-Control:private”头信息,启用压缩
no_last_modified – 启用压缩,如果 header 中包含”Last_Modified”头信息,启用压缩
no_etag – 启用压缩,如果 header 中包含“ETag”头信息,启用压缩
auth – 启用压缩,如果 header 中包含“Authorization”头信息,启用压缩
any – 无条件压缩所有结果数据