nginx 配置
好记性不如烂笔头,这次附上nginx 文件通用配置
下面展示一些 通用配置。
########### 每个指令必须有分号结束。#################
#user nobody;
user root; #配置用户或者组,默认为nobody nobody。
worker_processes 8; #允许生成的进程数,默认为1
#error_log logs/error.log;#制定日志路径,级别。这个设置可以放入全局块,http块,server块,级别以此为:debug|info|notice|warn|error|crit|alert|emerg
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid; #指定nginx进程运行文件存放地址
events {
#accept_mutex on; #设置网路连接序列化,防止惊群现象发生,默认为on
#multi_accept on; #设置一个进程是否同时接受多个网络连接,默认为off
worker_connections 204800; #最大连接数,默认为512
use epoll; #事件驱动模型,select|poll|kqueue|epoll|resig|/dev/poll|eventport
}
http {
include mime.types; #文件扩展名与文件类型映射表
default_type application/octet-stream; #默认文件类型,默认为text/plain
charset UTF-8;
#access_log off; #取消服务日志
#log_format myFormat '$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 myFormat; #combined为日志格式的默认值
sendfile on; #允许sendfile方式传输文件,默认为off,可以在http块,server块,location块
#sendfile_max_chunk 100k; #每个进程每次调用传输数量不能大于设定的值,默认为0,即不设上限, 参数用于开启高效文件传输模式。将tcp_nopush和tcp_nodelay两个指令设置为on用于防止网络阻塞
tcp_nopush on; ;
tcp_nodelay on;
keepalive_timeout 65; #连接超时时间,默认为75s,可以在http,server,location块。设置客户端连接保持活动的超时时间。在超过这个时间之后,服务器会关闭该连接
client_max_body_size 0; #用来设置允许客户端请求的最大的单个文件字节数
client_body_buffer_size 2048m;
client_header_buffer_size 10m; #用于指定来自客户端请求头的headerbuffer大小。对于大多数请求,1K的缓冲区大小已经足够,如果自定义了消息头或有更大的Cookie,可以增加缓冲区大小。这里设置为10m;
#client_header_timeout #设置客户端请求头读取超时时间。如果超过这个时间,客户端还没有发送任何数据,Nginx将返回“Request time out(408)”错误;
#client_body_timeout #设置客户端请求主体读取超时时间。如果超过这个时间,客户端还没有发送任何数据,Nginx将返回“Request time out(408)”错误,默认值是60;
#send_timeout #指定响应客户端的超时时间。这个超时仅限于两个连接活动之间的时间,如果超过这个时间,客户端没有任何活动,Nginx将会关闭连接。
large_client_header_buffers 4 10m; #用来指定客户端请求中较大的消息头的缓存最大数量和大小, “4”为个数,“10m”为大小,最大缓存量为4个10m;
open_file_cache max=204800 inactive=2000s; #这个将为打开文件指定缓存,默认是没有启用的,max 指定缓存数量,建议和打开文件数一致,inactive是指经过多长时间文件没被请求后删除缓存。
open_file_cache_min_uses 1; #指令中的inactive参数时间内文件的最少使用次数,如果超过这个数字,文件描述符一直是在缓存中打开的,如上例,如果有一个文件在inactive时间内一次没被使用,它将被移除。
open_file_cache_valid 300s; #这个是指多长时间检查一次缓存的有效信息。
proxy_buffering on; #是否开启proxy的buffer功能,如果这个设置为off,那么proxy_buffers和proxy_busy_buffers_size这两个指令将会失效。 但是无论proxy_buffering是否开启,proxy_buffer_size都是生效的
proxy_buffer_size 64k; #设置一个特殊的buffer大小的。从被代理服务器上获取到的第一部分响应数据内容到代理服务器上,通常是header,就存到了这个buffer中。 如果该参数设置太小,会出现502错误码,这是因为这部分buffer不够存储header信息。建议设置为4k
proxy_buffers 4 64k; #这个参数设置存储被代理服务器上的数据所占用的buffer的个数和每个buffer的大小。所有buffer的大小为这两个数字的乘积。
proxy_busy_buffers_size 64k; # 在所有的buffer里,我们需要规定一部buffer把自己存的数据传给客户端,这部分buffer就叫做busy_buffer proxy_busy_buffer_size参数用来设置处于busy状态的buffer有多大。
proxy_temp_file_write_size 5m; #设置同时写入临时文件的数据量的总大小。通常设置为8k或者16k
proxy_read_timeout 30; #控制proxy后端服务器之间的超时时间
gzip on; #gzip用于设置开启或者关闭gzip模块,“gzip on”表示开启GZIP压缩,实时压缩输出数据流;
gzip_comp_level 5; #用来指定GZIP压缩比,1 压缩比最小,处理速度最快;9 压缩比最大,传输速度快,但处理最慢,也比较消耗cpu资源;
gzip_min_length 10; #设置允许压缩的页面最小字节数,页面字节数从header头的Content-Length中获取。默认值是0,不管页面多大都进行压缩。建议设置成大于1K的字节数,小于1K可能会越压越大
gzip_http_version 1.1; #用于设置识别HTTP协议版本,默认是1.1,目前大部分浏览器已经支持GZIP解压,使用默认即可;
gzip_static on; #开启静态压缩
gzip_buffers 16 64k; #表示申请16个单位为64K的内存作为压缩结果流缓存,默认值是申请与原始数据大小相同的内存空间来存储gzip压缩结果
gzip_types text/plain application/javascript application/x-javascript text/javascript text/css application/xml font/ttf font/otf image/svg+xml; #用来指定压缩的类型,无论是否指定,“text/html”类型总是会被压缩的
gzip_vary on; #选项可以让前端的缓存服务器缓存经过GZIP压缩的页面,例如用Squid缓存经过Nginx压缩的数据
server {
listen 8040; #监听端口
server_name 127.0.0.1; #监听地址
location / { #请求的url过滤,正则匹配,~为区分大小写,~*为不区分大小写。
root /usr/local/nginx/html; #根目录
index index.html index.htm; #设置默认页
try_files $uri $uri/ /index.html;
#deny 117.117.17.15; #拒绝的ip
#allow 117.117.17.16; #允许的ip
}
location ~/api/oa/stock {
proxy_set_header Host $proxy_host;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_pass http://117.117.17.17:8080; #请求转向mysvr 定义的服务器列表
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/local/nginx/html;
}
}
}