阿里团队的tengin-x出的nginx文档:http://tengine.taobao.org/book/chapter_02.html javascript
运行css
a、首先启动了一个master进程,而后阻塞端口(默认80)的信号。
html
b、接受信号,加载配置文件,启动worker来处理请求。
java
c、worker处理完成request的全部的数据处理,并response个client。node
重启
linux
a、当使用nginx -s reload的时候,已经有的worker不会当即中止工做。可是,也不会在去抢request请求。
nginx
b、新的master在处理请求的时候,会从新fork新的worker。
web
worker
json
a、worker是fork的master,所用共享文件描述符。当request信号来的时候,全部的worker都会去抢sock的互斥锁,抢到的处理request。
后端
########main########## 链接数、进程数、用户及用户组、 ########http########## http{ http参数设置 server{ 服务器设置 } } ########mail########## mail{ .......... }
a、main模块
################### main模块:配置用户或用户组,worker数量、错误日志、文件描述符、事件设置(这部分都是配置链接数、进程(至关于java中的线程数)) #################### #用户及用户组 user nobady; #工做进程,根据硬件调整,大于等于cpu核数 worker_processes 8; #错误日志(将不一样的日志等级、记录到不一样的文件中) error_log logs/error.log error; #error_log logs/notice.log notice; #error_log logs/info.log info; #error_log logs/debug.log debug; #error_log logs/warn.log warn; #pid放置的位置 pid logs/nginx.pid; worker_rlimit_nofile 204800; #指定进程能够打开的最大描述符 #这个指令是指当一个nginx进程打开的最多文件描述符数目,理论值应该是最多打开文件数(ulimit -n)与nginx进程数相除,可是nginx分配请求并非那么均匀,因此最好与ulimit -n 的值保持一致。 #如今在linux 2.6内核下开启文件打开数为65535,worker_rlimit_nofile就相应应该填写65535。这是由于nginx调度时分配请求到进程并非那么的均衡,因此假如填写10240,总并发量达到3-4万时就有进程可能超过10240了,这时会返回502错误。 events{ use epoll; #linux的epoll是同步非阻塞I/O,有很高的可复用性。 worker_connections 204800; #每个worker的链接数 #工做进程的最大链接数量,根据硬件调整,和前面工做进程配合起来用,尽可能大,可是别把cpu跑到100%就行 #每一个进程容许的最多链接数, 理论上每台nginx服务器的最大链接数为 #总共能够接受的链接数:worker_processes*worker_connections }
b、http
#############################3 http区域中主要http相关的参数:文件类型、字符集、root/index、http的log(主要是access.log)、链接时间、压缩、系统文件设置、动态代理、以及server 等等 #################################### http { ########### 所用server 都会生效下面的配置################### include mime.types; #include 用户加载另外的配置文件,例如其它配置内容 default_type application/octet-stream; server_tokens off; #关闭在错误页面中的nginx版本数字 charset UTF-8; limit_conn addr 100; #每一个IP链接100个链接 root D:\website index index.html index.htm; # 命名为main的日志格式 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; #开启文件从硬盘到网络的传输,不须要经过缓存(减小IO,平缓硬盘和网络的处理速度) #tcp_nopush on; #此选项容许或禁止使用socke的TCP_CORK的选项,此选项仅在使用sendfile的时候使用 #tcp_nodelay on; #【响应设置,缓存和响应】 client_max_body_size 50m; #客户端请求的请求体大小 client_header_buffer_size 4k; #客户端请求头部的缓冲区大小 client_body_buffer_size 256k; #客服端请求体缓存大小 large_client_header_buffers 8 128k; #客户请求头的最大缓冲大小 client_header_timeout 3m; #请求头超时 client_boddy_timeout 3m; #请求体超时 reset_timeout_connection #关闭不响应的客户端链接。这将会释放那个客户端所占有的内存空间 send_timeout 3m; #客服端响应超时 keepalive_timeout 65; #nginx和client的链接超时 #【压缩】 gzip on; gzip_disable "msie6"; #ie6一下不压缩 gzip_proxied any; #容许或者禁止压缩基于请求和响应的响应流 gzip_min_length 1000; #最小的压缩文件,小于这个不压缩 gzip_comp_level 4; #压缩等级(1-9) gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript; #压缩类型 #【反向代理】 ########## 响应时间 ###################### proxy_connect_timeout 75s; #nginx跟后端服务器请求时间 proxy_rend_timeout 75s; #链接后,等候后端服务器响应时间处理时间。 proxy_send_timeout 75s; #链接成功后,发送数据到后端服务器的时间 ########## 响应缓存 ###################### proxy_buffer_size 64k; #代理服务器(nginx)保存用户头的缓冲区 proxy_buffers 4 32k; #proxy_buffers缓冲区,网页平均在32k如下 proxy_busy_buffers_size 64k; #高负荷下缓冲大小(proxy_buffers*2) proxy_temp_file_write_size 64k; #设定缓存文件大小,大于这个值,将从后端服务器传送,不用经过nginx缓存 proxy_ignore_client_abort on; #若是客户端断开请求,也保持与后端服务器的链接,防止服务器出现BUG ################设置传送给后台服务器的请求头(主要是为了session) ##### proxy_set_header Host $host; #表示客户端请求头部中的Host字段 proxy_set_header X-Real-IP $remote_addr; #客户端IP地址 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; #设置头转发 upstream tomcat{ server 192.168.217.1:8080 weight=4; server 192.168.217.2:8080 weight=4; } ######【服务器】######## server{ listen 80; server_name localhost; #默认 localhost /{ } #错误 error_page 500 502 503 504 /50x.html; localhost =/50x.html{ } #静态文件 localhost ~*.*\.(js|css)?${ expires 7d; #保存7天 access_log off; #关闭访问日志 } localhost ~*.*\(png|jpg|gif|jpeg|bmp|ico)?${ expires 7d; access_log off; } location ~* .*\.(zip|rar|exe|msi|iso|gho|mp3|rmvb|mp4|wma|wmv|rm)?${ deny all; //禁止这些文件下载,你们能够根据本身的环境来配置 } } server{ listen 80; server_name tomcat.com; #动态代理 localhost =/{ proxy_redirect off; proxy_pass http://tomcat; } #错误 error_page 500 502 503 504 /50x.html; localhost =/50x.html{ } #静态文件 localhost ~*.*\.(js|css)?${ expires 7d; #保存7天 access_log off; #关闭访问日志 } localhost ~*.*\(png|jpg|gif|jpeg|bmp|ico)?${ expires 7d; access_log off; } location ~* .*\.(zip|rar|exe|msi|iso|gho|mp3|rmvb|mp4|wma|wmv|rm)?${ deny all; //禁止这些文件下载,你们能够根据本身的环境来配置 } ######################访问控制##################300s ##location / { ## : deny 192.168.1.1; ## : allow 192.168.1.0/24; ## : allow 10.1.1.0/16; ## : deny all; ##} }