Nginx是一款高性能的HTTP服务器软件,和Apache一样,在功能实现上都采用模块结构,都支持通用语言接口,如支持PHP、Perl、Python等的接口。还支持正向和反向代理、虚拟主机、URL重新、压缩传输、SSL加密传输等。但是和Apache相比,Nginx有着众多的突出优点,主要变现在Nginx比apache处理速度更快,占用的内存资源更少,并且nginx模块是静态编译的,对Fcgi支持很好,在连接处理上,Nginx支持epoll,代码占用空间少。Nginx是一款比Apache性能更强劲的服务器软件。
在这里总结一下Nginx配置文件 nginx.conf 中文详解,并且会提示大家如何配置Ngixn。
user ftp; #定义Nginx运行的用户和用户组 worker_processes 2; #nginx进程数,每个进程耗费10~20MB内存,建议设置为等于CPU总核心数。 error_log /dev/null; #全局错误日志定义类型,日志输出级别共有[ debug | info | notice | warn | error | crit ]五种,其中debug输出日志最为详细,而crit输出信息最少。 #error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info;
pid conf/nginx.pid; #指定进程文件的存储位置
worker_rlimit_nofile 1024; #一个nginx进程打开的最多文件描述符数目,理论值应该是最多打开文件数(系统的值ulimit -n)与nginx进程数相除,但是nginx分配请求并不均匀,所以建议与ulimit -n的值保持一致。 events { #工作模式与连接数上限 use epoll; #参考事件模型,use [ kqueue | rtsig | epoll | /dev/poll | select | poll ]; epoll模型是Linux 2.6以上版本内核中的高性能网络I/O模型,如果跑在FreeBSD上面,就用kqueue模型。 worker_connections 1024; #定义每个进程最大连接数,最大客户端连接数=worker_processes(连接数)*worker_connections(进程数),执行操作系统命令“ulimit -n 65536”后,worker_connections的设置才能生效。 }
http { #设定http服务器 include mime.types; #文件扩展名与文件类型映射表,较少主配置文件的复杂度 default_type application/octet-stream; #默认文件类型,这里设置为为二进制流
include proxy.conf; #包含proxy.conf配置文件 log_format main '$remote_addr - $remote_user [$time_local] "$request" ' #实现对日志格式的设置,其中main为日志输出格式的名字,可以在access_log中引用。 '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"';
access_log logs/access.log main; #用了log_format指令设置了日志格式之后,需要用access_log指令指定日志文件的存放路径
server_tokens off; #设置在HTTP响应中是否显示ngixn的版本号,默认是隐藏的 sendfile on; #开启高效文件传输模式,sendfile指令指定nginx是否调用sendfile函数来输出文件,对于普通应用设为 on,如果用来进行下载等应用磁盘IO重负载应用,可设置为off,以平衡磁盘与网络I/O处理速度,降低系统的负载。注意:如果图片显示不正常把这个改成off。 tcp_nopush on; #防止网络阻塞 server_names_hash_bucket_size 256; #保存服务器名字的hash表是由指令server_names_hash_max_size 和server_names_hash_bucket_size所控制的。参数hash bucket size总是等于hash表的大小,并且是一路处理器缓存大小的倍数。在减少了在内存中的存取次数后,使在处理器中加速查找hash表键值成为可能。如果hash bucket size等于一路处理器缓存的大小,那么在查找键的时候,最坏的情况下在内存中查找的次数为2。第一次是确定存储单元的地址,第二次是在存储单元中查找键 值。因此,如果Nginx给出需要增大hash max size 或 hash bucket size的提示,那么首要的是增大前一个参数的大小. client_header_buffer_size 256k; #客户端请求头部的缓冲区大小,这个可以根据你的系统分页大小来设置,一般一个请求的头部大小不会超过1k,不过由于一般系统分页都要大于1k,所以这里设置为分页大小。分页大小可以用命令getconf PAGESIZE取得。 #large_client_header_buffers 4 32k;
large_client_header_buffers 4 256k; #客户请求头缓冲大小 nginx默认会用client_header_buffer_size这个buffer来读取header值,如果header过大,它会使用large_client_header_buffers读取 client_body_buffer_size 256k; #缓冲区代理缓冲用户端请求的最大字节数 client_header_timeout 3m; #用于设置客户端请求头读取超时时间,超时将返回“Request time out (408)”错误。 client_body_timeout 6m; #用于设置客户端请求主体读取超时时间,超时将返回“Request time out (408)”错误。 send_timeout 3m; #指定响应客户端的超时时间。超时Nginx将会关闭连接。
client_max_body_size 200m; #设定通过nginx上传文件的大小
keepalive_timeout 120; ##长连接超时时间,单位是秒
fastcgi_intercept_errors on; #FastCGI相关参数是为了改善网站的性能:减少资源占用,提高访问速度。 fastcgi_connect_timeout 300; fastcgi_send_timeout 300; fastcgi_read_timeout 300; #fastcgi_buffer_size 64k; #fastcgi_buffers 8 64k; #fastcgi_busy_buffers_size 128k; #fastcgi_temp_file_write_size 128k;
fastcgi_buffer_size 128k; fastcgi_buffers 4 256k; fastcgi_busy_buffers_size 256k; fastcgi_temp_file_write_size 256k;
gzip on; #gzip模块设置 #开启gzip压缩输出 gzip_min_length 1k; #最小压缩文件大小 gzip_buffers 4 16k; #压缩缓冲区 gzip_http_version 1.0; #压缩版本(默认1.1,前端如果是squid2.5请使用1.0) gzip_comp_level 2; #压缩等级,可以设置为1~9,其中1压缩比最小,处理速度最快;9压缩比最大,传输速度快,但处理慢,也比较耗CPU资源。 gzip_types text/plain application/x-javascript text/css application/xml; #压缩类型,默认就已经包含text/html,所以下面就不用再写了,写上去也不会有问题,但是会有一个warn。 gzip_vary on; #设置让前端的缓存服务器缓存经过gzip压缩的页面。
server { #虚拟主机的配置 listen 8081 default_server; #监听端口 server_name localhost; #域名可以有多个,用空格隔开
#charset koi8-r; #编码
#access_log logs/host.access.log main; #日志保存路径
index index.php index.html; root /usr/local/nginx/html; location ~ \.php$ { fastcgi_pass 127.0.0.1:10000; include fastcgi.conf; } location ~ \.key$ { return 404; } #location / { #对 "/" 启用反向代理 # root html; # index index.html index.htm; #}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html #错误页设置 # error_page 500 502 503 504 /50x.html; location = /50x.html { root html; }
# proxy the PHP scripts to Apache listening on 127.0.0.1:80 # #location ~ \.php$ { # proxy_pass http://127.0.0.1; #}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 # #location ~ \.php$ { # root html; # fastcgi_pass 127.0.0.1:9000; # fastcgi_index index.php; # fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name; # include fastcgi_params; #}
# deny access to .htaccess files, if Apache's document root 拒绝访问.htaccess文件,如果Apache的文档根目录 # concurs with nginx's one # #location ~ /\.ht { # deny all; #} }
# another virtual host using mix of IP-, name-, and port-based configuration 另一个虚拟主机使用的混合的知识产权,名称和端口为基础的配置 # #server { # listen 8000; # listen somename:8080; # server_name somename alias another.alias;
# location / { # root html; # index index.html index.htm; # } #}
# HTTPS server #HTTPS 服务器配置 # #server { # listen 443; # server_name localhost;
# ssl on; # ssl_certificate cert.pem; # ssl_certificate_key cert.key;
# ssl_session_timeout 5m;
# ssl_protocols SSLv2 SSLv3 TLSv1; # ssl_ciphers HIGH:!aNULL:!MD5; # ssl_prefer_server_ciphers on;
# location / { # root html; # index index.html index.htm; # } #} include vhost.conf; }
原创文章,转载请注明: 转载自科技爱好者博客
本文链接地址: Nginx配置文件 nginx.conf 中文详解及配置 (https://www.tujing.site/1239)
如果博客对您有帮助,请给我 赞助