nginx配置案例


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 – 无条件压缩所有结果数据

  • nginx 中如何设置 gzip 总结

  • Nginx 的 proxy buffer 参数总结


文章作者: 高红翔
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 高红翔 !
  目录