#user nobody;
worker_processes 1;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
#这个指令是指当一个nginx 进程打开的最多文件描述符数目,理论值应该是最多打开文件数(ulimit -n)与nginx 进程数相除,但是nginx 分配请求并不是那么均匀,所以最好与ulimit -n 的值保持一致
worker_rlimit_nofile 65535;
events {
#默认最大的并发数为1024,如果你的网站访问量过大,已经远远超过1024这个并发数,那你就要修改worker_connecions这个值 ,这个值越大,并发数也有就大
worker_connections 1024;
}
http {
geo $limit {
default 1;
10.0.0.0/8 0;
192.168.0.0/24 0;
}
map $limit $limit_key {
0 "";
1 $binary_remote_addr;
}
#限制连接数
limit_conn_zone $binary_remote_addr zone=perip:10m;
limit_conn_zone $server_name zone=preserver:10m;
#固定的速度提供服务(2r/s)
limit_req_zone binary_remote_addr zone=mylimit:10m rate=2000r/s;
# 不显示 nginx 版本号
server_tokens Off;
include mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log logs/access.log main;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
client_header_timeout 150;
client_body_timeout 1800;
send_timeout 150;
proxy_read_timeout 1800;
proxy_hide_header X-Powered-By;
proxy_hide_header Server;
client_max_body_size 1024m;
gzip on;
gzip_min_length 10k;
gzip_buffers 4 16k;
gzip_http_version 1.0;
gzip_comp_level 2;
gzip_types text/plain application/x-javascript text/css application/xml text/javascript image/jpeg image/gif image/png image/jpg;
#vary header支持,该选项可以让前端的缓存服务器缓存经过gzip压缩的页面
gzip_vary on;
gzip_disable "MSIE [1-6]";
upstream tomcat_servers{
server 10.1.1.1:22080 weight=1;
server 10.1.1.2:22080 weight=1;
server 10.1.1.3:22080 weight=1;
}
server {
#表示限制单个IP同时最多能持有20个连接。
limit_conn perip 40;
#表示虚拟主机(server) 同时能处理并发连接的总数为100。
limit_conn preserver 1000;
#burst 表示在超过设定的访问速率后能额外处理的请求数。
#当 rate=2r/s 时,表示每500ms 可以处理一个请求。
#burst=5时,如果同时有10个请求到达,nginx 会处理第1个请求,剩余9个请求中,会有5个被放入队列,剩余的4个请求会直接被拒绝。
#然后每隔500ms从队列中获取一个请求进行处理,此时如果后面继续有请求进来,如果队列中的请求数目超过了5,会被拒绝,不足5的时候会添加到队列中进行等待。
#nodelay 表示不延迟。设置 nodelay 后,第一个到达的请求和队列中的请求会立即进行处理,不会出现等待的请求。
limit_req zone=mylimit burst=1000 nodelay;
listen 80;
listen 9443 ssl;
server_name localhost;
ssl_certificate ../cert/cert.pem;
ssl_certificate_key ../cert/cert.key;
ssl_session_timeout 30m;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-CHACHA20-POLY1305;
ssl_prefer_server_ciphers off;
# 控制 HTTP 请求头部的缓冲区大小
large_client_header_buffers 4 16k;
# 开启HTTP严格传输安全HSTS
add_header Strict-Transport-Security "max-age=30000000; preload";
charset utf-8;
if ( $scheme = http ) {
return 301 https://$host:9443$request_uri;
}
location / {
proxy_pass http://tomcat_servers;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto https;
proxy_redirect http:// https://;
# proxy_cookie_path / "/; secure; SameSite=Lax";
client_max_body_size 600m;
client_body_buffer_size 128k;
proxy_connect_timeout 600;
proxy_read_timeout 600;
proxy_send_timeout 600;
proxy_buffer_size 64k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
}
location /status668887655678tyuiohghjkjhhjwefjkasdffqwerqwff {
allow 127.0.0.1;
deny all;
stub_status on;
access_log logs/status.log;
auth_basic "NginxStatus";
}
error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
标签:conf,header,样本,server,nginx,limit,proxy,timeout,log From: https://www.cnblogs.com/shichq/p/17747137.html