【本文档所介绍的内容适用于公司测试/生产常见的php,HTML等web环境部署,即常见的LAMP/LNMP环境部署】
上一小结我们介绍关于LNMP的部署安装,但LNMP的配置还有一个很重要的部分,就是nginx主配置文件nginx.conf的配置,下面就讲讲关于nginx的主配置文件(nginx.conf)的相关参数介绍
如下所示:为nginx主配置文件:nginx.conf参考模板
#user nobody; user nginx ; //指定nginx服务的运行账号 worker_processes auto; //指定nginx work进程的运行数,不一般与cpu的核心相等,也可以设置auto自动识别 worker_rlimit_nofile 65535; //一个nginx进程打开的最多文件描述符数目,此数字最好与系统(ulimit -n)相等 #worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000; //绑定work进程到指定的cpu上 #error_log logs/error.log info; //定义全局错误日志定义类型 #pid logs/nginx.pid; //设置nginx pid文件的路径 events { use epoll; //定义nginx使用的工作模式 worker_connections 65535; //定义nginx单个work进程的最大连接数 multi_accept on; } http { include mime.types; include /etc/nginx/extra/jkl.conf; default_type application/octet-stream; //定义nginx访问日志格式 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; //定义nginx日志的访问记录类型 charset utf-8; //定义字符编码 server_names_hash_bucket_size 128; //服务器名字的hash表大小 client_header_buffer_size 1M; // 客户端请求头部的缓冲区大小,这个可以根据你的系统分页大小来设置,一般一个请求头的大小不会超过1k,不过由于一般系统分页都要大于1k,所以这里设置为分页大小。 分页大小可以用命令getconf PAGESIZE 取得。 但也有client_header_buffer_size超过4k的情况,但是client_header_buffer_size该值必须设置为“系统分页大小”的整倍数。 # client_body_timeout 15; //设置客户端主体超时时间,如果客户端超过这个时间还没有请求数据,nginx将会返回408错误 # client_header_timeout 15; ////设置客户端头部超时时间,如果客户端超过这个时间还没有请求数据,nginx将会返回408错误 # send_timeout 15; //指定响应客户端超时时间,如果在该时间之内客户端还没有活动,nginx将会主动关闭该连接 large_client_header_buffers 4 128k; //设置的缓存区 client_max_body_size 2000m; //设置上传文件的最大值 sendfile on; //开启高效文件传输模式,sendfile指令指定nginx是否调用sendfile函数来输出文件,对于普通应用设为 on,如果用来进行下载等应用磁盘IO重负载应用,可设置为off,以平衡磁盘与网络I/O处理速度,降低系统的负载。注意:如果图片显示不正常把这个改成off。 tcp_nopush on; //防止网络阻塞 tcp_nodelay on; //防止网络阻塞 keepalive_timeout 60; //长连接超时时间,单位是秒 reset_timedout_connection on; //开启超时连接服用功能 fastcgi_cache_path /var/tmp/nginx/fastcgi_cache levels=1:2 keys_zone=TEST:10m inactive=5m max_size=10g;//定义缓存存放的路径及存储区域总大小 fastcgi_connect_timeout 90; //定义nginx与后端fastcgi连接超时时间 fastcgi_send_timeout 60; //定义nginx向后端请求超时时间(指两次握手后向fastcgi传送请求超时时间) fastcgi_read_timeout 60;//定义nginx响应后端响应的超时时间(指两次握手后接受fastcgi响应请求的超时时间) fastcgi_buffer_size 64k; //指定读取fastcgi应答第一部分需要用多大的缓冲区,这个值表示将使用一个64kb的缓冲区响应第一部分应答(应答头) fastcgi_buffers 8 128k; //指本地需要用多大的缓冲区缓冲fastcgi的应答请求,如果一个php脚本所产生的页面大小为256kb,那么会分配4个64kb缓冲区来缓存,如果页面大于256kb,那么大于256kb的部分会缓存到fastcgi_temp指定的路径中,但是因为内存中数据处理远快于磁盘,所以这个值应该为站点中php所产生的页面大小的中间值,如果站点大部分php脚本产生的页面为256kb,那么可以设置成"8 16k 4 64k" fastcgi_busy_buffers_size 256k; //建议设置为fastcgi——buffer的两倍, fastcgi_temp_file_write_size 256k; //在写入fastcgi_temp_path时用到多大缓存值,默认为fastcgi_buffers的两倍,设置值若过小会导致nginx报502错误 # fastcgi_temp_path /usr/local/nginx/ngx_fastcgi_tmp fastcgi_cache oldboy_nginx; //开启fastcgi缓存并为其指定一个名称(根据需要来选择) fastcgi_cache_valid 200 302 1h; //对于200 ,302应答缓存1小时 fastcgi_cache_valid any 1m; //对于其他应答缓存1分钟 fastcgi_cache_min_uses 1; //缓存最小使用次数 fastcgi_cache_key "$request_method://$host$request_uri"; open_file_cache max=204800 inactive=20s; //这个将为打开文件指定缓存,默认是没有启用的,max 指定缓存数量,建议和打开文件数一致,inactive 是指经过多长时间文件没被请求后删除缓存。 open_file_cache_valid 30s; //这个是指多长时间检查一次缓存的有效信息。 open_file_cache_min_uses 2; //open_file_cache 指令中的inactive 参数时间内文件的最少使用次数,如果超过这个数字,文件描述符一直是在缓存中打开的,如上例,如果有一个文件在inactive 时间内一次没被使用,它将被移除。 # open_file_cache_errors on; gzip on; //开启gzip压缩输出 # gzip_disable "msie6"; //使用正则表达式来指定某些不需要gzip压缩的浏览器(将和User-Agents进行匹配)。依赖于PCRE库。在0.6.23版本中首次使用0.7.63版本以后,你可以为IE5.5和IE6 SP1使用msie6参数来禁止gzip压缩。 gzip_vary on; //开启对vary header 支持; gzip_proxied any; //对所有请求都启用压缩功能 gzip_comp_level 6; //压缩等级 gzip_min_length 1k; //最小压缩文件大小 gzip_buffers 16 8k; //指定缓存压缩应答的缓冲区数量和大小,如果不设置,一个缓存区的大小为分页大小,根据环境的不同可能是4k或8k。 gzip_http_version 1.1; //压缩版本(默认1.1,前端如果是squid2.5请使用1.0) gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript; //压缩类型,默认就已经包含text/html,所以下面就不用再写了,写上去也不会有问题。 #access_log logs/access.log main; # sendfile on; #tcp_nopush on; #keepalive_timeout 0; # keepalive_timeout 65; #gzip on; # server { # listen 80; # server_name localhost; #charset koi8-r; #access_log logs/host.access.log main; # 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 # 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 # #server { # listen 443 ssl; # server_name localhost; # ssl_certificate cert.pem; # ssl_certificate_key cert.key; # ssl_session_cache shared:SSL:1m; # ssl_session_timeout 5m; # ssl_ciphers HIGH:!aNULL:!MD5; # ssl_prefer_server_ciphers on; # location / { # root html; # index index.html index.htm; # } #} }
为了方便,我们也可以将新增的一些优化参数单独编辑在一个文件里,比如zend.conf,然后在nginx.conf使用include引用该配置
# {nginx setting} charset utf-8; server_names_hash_bucket_size 128; client_header_buffer_size 1M; # client_body_timeout 15; # client_header_timeout 15; # send_timeout 15; large_client_header_buffers 4 128k; client_max_body_size 2000m; sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 60; reset_timedout_connection on; # {fastcgi setting} fastcgi_cache_path /var/tmp/nginx/fastcgi_cache levels=1:2 keys_zone=TEST:10m inactive=5m max_size=10g; fastcgi_connect_timeout 90; fastcgi_send_timeout 60; fastcgi_read_timeout 60; fastcgi_buffer_size 64k; fastcgi_buffers 8 128k; fastcgi_busy_buffers_size 256k; fastcgi_temp_file_write_size 256k; # fastcgi_temp_path /usr/local/nginx/ngx_fastcgi_tmp # {file setting} open_file_cache max=204800 inactive=20s; open_file_cache_valid 30s; open_file_cache_min_uses 2; # open_file_cache_errors on; # {gzip setting} gzip on; # gzip_disable "msie6"; gzip_vary on; gzip_proxied any; gzip_comp_level 6; gzip_min_length 1k; gzip_buffers 16 8k; gzip_http_version 1.1; gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript; # {proxy setting} proxy_cache_path /var/tmp/nginx/fastcgi_cache levels=1:2 keys_zone=TEST:10m inactive=5m max_size=10g; proxy_connect_timeout 90; proxy_send_timeout 60; proxy_read_timeout 60; proxy_buffer_size 64k; proxy_buffers 8 128k; proxy_busy_buffers_size 256k; proxy_temp_file_write_size 256k; # proxy_temp_path /usr/local/nginx/ngx_fastcgi_tmp fastcgi_cache_valid 200 302 1h; fastcgi_cache_valid any 1m; fastcgi_cache_min_uses 1; fastcgi_cache_use_stale error timeout invalid_header http_500 http_502 http_503 http_504; fastcgi_cache_key "$request_method://$host$request_uri";
上述nginx相关优化配置添加好了后,新建一个关于关于php的web配置文件,如下所示,为一个通用的nginx对php解析的参考模板
vim /etc/nginx/extra/web.conf server { listen 80 default backlog=65535; server_name localhost; root /usr/local/www; index index.php index.html ; location ~ \.php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_split_path_info ^(.+\.php)(.*)$; fastcgi_param PATH_INFO $fastcgi_path_info; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; fastcgi_cache fastcgi_nginx; fastcgi_cache_valid 200 302 1h; fastcgi_cache_valid any 1m; fastcgi_cache_min_uses 1; fastcgi_cache_use_stale error timeout invalid_header http_500 http_502 http_503 http_504; fastcgi_cache_key "$request_method://$host$request_uri"; }
至此关于LNMP的大致配置参数讲解就到这里了!
时间: 2024-11-07 14:14:18