nginx配置优化
2017-08-21 17:24
141 查看
nginx配置文件优化
#cd /usr/local/nginx/conf
#vim nginx.conf
#nginx 运行的用户 user nobody;
#开启的进程数
worker_processes 1;
#定义错误日志的路径及其日志级别
error_log /usr/local/nginx/logs/error.log crit;
#nginx 的进程
pid logs/nginx.pid;
#specifiles the value for maximum file descriptors that can be opened by this process
#文件句柄数,和系统单进程打开的文件数相同,不必理会进程个数
worker_rlimit_nofile 65535;
events {
use epoll;
worker_connections 1024; #定义的是单个进程的连接数,该值受系统进程打开文件数限制,需要修改打开的文件句柄数,但是max_client = worker_proxesses X work_connextions,
}
http {
include mime.types;
default_type application/octet-stream;
#日志的格式
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"request_method $scheme://$host$request_uri $server_protocol" $status $body_bytes_sent'
'"$http_user_agent" "$http_x_forwarded_for"';
# 指定服务器名称哈希的大小,hash bucket size 等于一路处理器缓存大小,与server_names_hash_max_size 共同控制保存服务器名的HASH表
server_names_hash_bucket_size 128;
# 以下两项是设定客户端请求Header头缓存去的大小,4 为个数。128k 为大小。申请4个128k。当http 的uri太长或者request header 过大时会报414 Request URI too large 或者400 bad request
client_header_buffer_size 32k;
large_client_header_buffers 4 128k;
#HTTP请求的BODY 最大限制,若超出此值,报413 Request Entity Too Lager
client_max_body_size 8m;
#缓冲去代理用户请求的最大字节数,可以理解为先保存本地,然后在传给用户
client_body_buffer_size 32k;
#不允许客户端主动关闭连接,如果该项为设置在nginx的日志中可能出现499 错误
proxy_ignore_client_abort on;
#nginx 和后端服务器连接超时时间 发起握手等候响应时间
proxy_connect_timeout 5;
#连接成功后等候后端服务器响应时间,其实已经进入后端的排队等候处理
proxy_read_timeout 60;
#后端服务器数据回传时间,就是在规定的时间内后端服务器必须传完所有的数据
proxy_send_timeout 5;
#代理请求缓存去,该缓存去间保存用户的头信息,以供nginx进行规则处理一般只要保能保存下头信息即可
proxy_buffer_size 32k;
#告诉nginx保存单个用的几个buffer 最大用多少空间
proxy_buffers 4 64k;
#高负载下缓冲大小(proxy_buffers*2)
proxy_busy_buffers_size 128k;,
#设置缓存文件夹大小,如果大于该值,将从upstream 服务器传递请求,而不缓冲到磁盘上
proxy_temp_file_write_size 1024m;
#这个将为打开文件指定缓存,默认是没有启用的,max指定缓存数量,建议和打开文件数一致,inactive是指经过多长时间文件没被请求后删除缓存。
open_file_cache max=102400 inactive=20s;
#这个是指多长时间检查一次缓存的有效信息。
open_file_cache_valid 30s;
#open_file_cache指令中的inactive参数时间内文件的最少使用次数,如果超过这个数字,文件描述符一直是在缓存中打开的,如上例,如果有一个文件在inactive时间内一次没被使用,它将被移除。
open_file_cache_min_uses 1;
#shutdown error display nginx version
# 关闭错误时的nginx 的版本显示
server_tokens off;
#open os function sendfile
# 打开高效的文件传输模式
sendfile on;
#tcp_nopush on;
tcp_nopush on; # 打开linux TCP_CORK,只有sendfile 打开时,该项才有效,用来发送系统HTTP response headers 设置选项的目的是告诉TCP协议不要仅仅为清空发送的缓存而发送报文段。通常三个设置TCPNOPUSH 插口选项。当请求长度超过报文段最大长度时,协议就好可能发出满长度的报文段,这样可以减少报文段的数量,减少的程度取决于每次发送的数量
keepalive_timeout 60;
tcp_nodelay on;
#打开TCP_NODELAY 在包含了keepalived 才有效,上面的四项有效的提高了文件传输性能,用sendfile() 函数来转移大量的数据,协议会需要预先解决数据包包头部分,正常情况下包头很小,而且套接字上设置了TCP_NODELAY 。有包头的包将被立即传输,在一些情况下,因为包成功的被对方收到后需要请求对方确认,这样,大量的数据传输就会被延迟而且产生大量不必要的网络流量交换,但是在socket上是指了TCP_CORK ,就像个管道塞住塞子把带有包头的包填满数据,所有的数据根据大小进行填充,自动通过数据包发送出去,但是在数据传送完成是,需要把塞子打开
#开启gzip 的设置
#gzip on;
gzip on;
#设置允许压缩的页面的最小字节数,页面字节数从Header 头中的Content-Length中获取建议设置成大于1k的字节数,小于1k可能越压越大
gzip_min_length 1k;
#设置以16k为单位4倍申请内存做压缩结果缓存,默认值是申请跟原始数据相同大小的内存空间存储gzip压缩结果
gzip_buffers 4 16k;
#默认1.1 ,大部分浏览器支持gzip 压缩
gzip_http_version 1.1;
#设置压缩级别 压缩比率1-9,压缩比率越大,越消耗系统资源
gzip_comp_level 2;
#设置压缩列席
gzip_types text/plain application/x-javascript text/css application/xml;
#设置前端的缓存服务,如squid缓存经过nginx压缩的数据,该选项在做反向代理是设定压缩,后面参数为验证的header头信息,在做相应的压缩处理,
gzip_vary on;
#proxy_cache
# 该处设置的是缓存的目录及其设置的大小
proxy_cache_path /usr/local/nginx/proxy_temp levels=1:2 keys_zone=cache_one:200m inactive=1d max_size=30g;
#设置负载池
upstream backend_server {
server 192.168.11.194:80 ;
# 注weight设置的权重 max_fails 设置的是健康监测失败次数,timeout 设置超时时间 当然此处主要是设置nginx的反向代理及其缓存,对于nginx 的负载均衡,在以后的文章中再详细介绍
# server 192.168.11.107:80 weight=1 max_fails=2 fail_timeout=30s;
}
server {
#注:监听的端口号
listen 80;
#server_name localhost;
#设置监听的主机名
server_name freehat.blog.51cto.com;
if ($host !~ 'freehat.blog.51cto.com') {
return 403;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
#设置扩展名以gif .jpg .css 等结尾的静态文件缓存
location ~.*\.(gif|jpg|jpeg|png|bmp|sqf|js|css)$
{
#设置防盗链
valid_referers none blocked freehat.blog.51cto.com;
if ($invalid_referer) {
return 404
#如果后端的服务器返回502 504 执行超时等错误,自动将请求转发到upstream 负责均衡池中的另外一台服务器,实现故障转移
proxy_next_upstream http_502 http_504 error timeout invalid_header;
#进行缓存,使用web缓存去cache_one
proxy_cache cache_one;
#以域名,URI,参数组合成web缓存的Key值,Nginx根据Key值哈希,储存缓存内容到二级缓存目录内
#对不同的HTTP 状态码设置不同的缓存时间
proxy_cache_valid 200 304 12h;
proxy_cache_valid any 1m;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
#设定proxy_set_header Accept-Encoding 或者是后台服务器关闭gzip,该台机器才不会缓存被压缩的文件,造成乱码
proxy_set_header Accept-Encoding "none";
# proxy_set_header Accept-Encoding ""; 同上面一项相同
#设置proxy_cache 支持后台设定的expires , 即使支持HTTP头信息定义的缓存规则
proxy_ignore_headers "Cache-Control" "Expires";
if ( !-e $request_filename )
{
proxy_pass http://backend_server;
}注:
该项是如果client 请求的文件在cache 中保存,nginx 直接从cache中把对应的文件返还给client ,不会在去后端的Server 去取对应的文件
expires 1h; 设置过去的时间
}
# 设置php jsp cgi 不保存在cache中
location ~.*\.(php|jsp|cgi)?$
{
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_pass http://backend_server;
}
#设置js|css 在浏览器中过期的时间
location ~ .*\.(js|css)
{
expires 1h;
}
#设置清除所有的cache
location ~/purge(/.*)
{
allow 127.0.0.1;
allow 192.168.11.0/24;
deny all;
proxy_cache_purge cache_one $host$1$is_args$args;
}
}
}
#cd /usr/local/nginx/conf
#vim nginx.conf
#nginx 运行的用户 user nobody;
#开启的进程数
worker_processes 1;
#定义错误日志的路径及其日志级别
error_log /usr/local/nginx/logs/error.log crit;
#nginx 的进程
pid logs/nginx.pid;
#specifiles the value for maximum file descriptors that can be opened by this process
#文件句柄数,和系统单进程打开的文件数相同,不必理会进程个数
worker_rlimit_nofile 65535;
events {
use epoll;
worker_connections 1024; #定义的是单个进程的连接数,该值受系统进程打开文件数限制,需要修改打开的文件句柄数,但是max_client = worker_proxesses X work_connextions,
}
http {
include mime.types;
default_type application/octet-stream;
#日志的格式
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"request_method $scheme://$host$request_uri $server_protocol" $status $body_bytes_sent'
'"$http_user_agent" "$http_x_forwarded_for"';
# 指定服务器名称哈希的大小,hash bucket size 等于一路处理器缓存大小,与server_names_hash_max_size 共同控制保存服务器名的HASH表
server_names_hash_bucket_size 128;
# 以下两项是设定客户端请求Header头缓存去的大小,4 为个数。128k 为大小。申请4个128k。当http 的uri太长或者request header 过大时会报414 Request URI too large 或者400 bad request
client_header_buffer_size 32k;
large_client_header_buffers 4 128k;
#HTTP请求的BODY 最大限制,若超出此值,报413 Request Entity Too Lager
client_max_body_size 8m;
#缓冲去代理用户请求的最大字节数,可以理解为先保存本地,然后在传给用户
client_body_buffer_size 32k;
#不允许客户端主动关闭连接,如果该项为设置在nginx的日志中可能出现499 错误
proxy_ignore_client_abort on;
#nginx 和后端服务器连接超时时间 发起握手等候响应时间
proxy_connect_timeout 5;
#连接成功后等候后端服务器响应时间,其实已经进入后端的排队等候处理
proxy_read_timeout 60;
#后端服务器数据回传时间,就是在规定的时间内后端服务器必须传完所有的数据
proxy_send_timeout 5;
#代理请求缓存去,该缓存去间保存用户的头信息,以供nginx进行规则处理一般只要保能保存下头信息即可
proxy_buffer_size 32k;
#告诉nginx保存单个用的几个buffer 最大用多少空间
proxy_buffers 4 64k;
#高负载下缓冲大小(proxy_buffers*2)
proxy_busy_buffers_size 128k;,
#设置缓存文件夹大小,如果大于该值,将从upstream 服务器传递请求,而不缓冲到磁盘上
proxy_temp_file_write_size 1024m;
#这个将为打开文件指定缓存,默认是没有启用的,max指定缓存数量,建议和打开文件数一致,inactive是指经过多长时间文件没被请求后删除缓存。
open_file_cache max=102400 inactive=20s;
#这个是指多长时间检查一次缓存的有效信息。
open_file_cache_valid 30s;
#open_file_cache指令中的inactive参数时间内文件的最少使用次数,如果超过这个数字,文件描述符一直是在缓存中打开的,如上例,如果有一个文件在inactive时间内一次没被使用,它将被移除。
open_file_cache_min_uses 1;
#shutdown error display nginx version
# 关闭错误时的nginx 的版本显示
server_tokens off;
#open os function sendfile
# 打开高效的文件传输模式
sendfile on;
#tcp_nopush on;
tcp_nopush on; # 打开linux TCP_CORK,只有sendfile 打开时,该项才有效,用来发送系统HTTP response headers 设置选项的目的是告诉TCP协议不要仅仅为清空发送的缓存而发送报文段。通常三个设置TCPNOPUSH 插口选项。当请求长度超过报文段最大长度时,协议就好可能发出满长度的报文段,这样可以减少报文段的数量,减少的程度取决于每次发送的数量
keepalive_timeout 60;
tcp_nodelay on;
#打开TCP_NODELAY 在包含了keepalived 才有效,上面的四项有效的提高了文件传输性能,用sendfile() 函数来转移大量的数据,协议会需要预先解决数据包包头部分,正常情况下包头很小,而且套接字上设置了TCP_NODELAY 。有包头的包将被立即传输,在一些情况下,因为包成功的被对方收到后需要请求对方确认,这样,大量的数据传输就会被延迟而且产生大量不必要的网络流量交换,但是在socket上是指了TCP_CORK ,就像个管道塞住塞子把带有包头的包填满数据,所有的数据根据大小进行填充,自动通过数据包发送出去,但是在数据传送完成是,需要把塞子打开
#开启gzip 的设置
#gzip on;
gzip on;
#设置允许压缩的页面的最小字节数,页面字节数从Header 头中的Content-Length中获取建议设置成大于1k的字节数,小于1k可能越压越大
gzip_min_length 1k;
#设置以16k为单位4倍申请内存做压缩结果缓存,默认值是申请跟原始数据相同大小的内存空间存储gzip压缩结果
gzip_buffers 4 16k;
#默认1.1 ,大部分浏览器支持gzip 压缩
gzip_http_version 1.1;
#设置压缩级别 压缩比率1-9,压缩比率越大,越消耗系统资源
gzip_comp_level 2;
#设置压缩列席
gzip_types text/plain application/x-javascript text/css application/xml;
#设置前端的缓存服务,如squid缓存经过nginx压缩的数据,该选项在做反向代理是设定压缩,后面参数为验证的header头信息,在做相应的压缩处理,
gzip_vary on;
#proxy_cache
# 该处设置的是缓存的目录及其设置的大小
proxy_cache_path /usr/local/nginx/proxy_temp levels=1:2 keys_zone=cache_one:200m inactive=1d max_size=30g;
#设置负载池
upstream backend_server {
server 192.168.11.194:80 ;
# 注weight设置的权重 max_fails 设置的是健康监测失败次数,timeout 设置超时时间 当然此处主要是设置nginx的反向代理及其缓存,对于nginx 的负载均衡,在以后的文章中再详细介绍
# server 192.168.11.107:80 weight=1 max_fails=2 fail_timeout=30s;
}
server {
#注:监听的端口号
listen 80;
#server_name localhost;
#设置监听的主机名
server_name freehat.blog.51cto.com;
if ($host !~ 'freehat.blog.51cto.com') {
return 403;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
#设置扩展名以gif .jpg .css 等结尾的静态文件缓存
location ~.*\.(gif|jpg|jpeg|png|bmp|sqf|js|css)$
{
#设置防盗链
valid_referers none blocked freehat.blog.51cto.com;
if ($invalid_referer) {
return 404
#如果后端的服务器返回502 504 执行超时等错误,自动将请求转发到upstream 负责均衡池中的另外一台服务器,实现故障转移
proxy_next_upstream http_502 http_504 error timeout invalid_header;
#进行缓存,使用web缓存去cache_one
proxy_cache cache_one;
#以域名,URI,参数组合成web缓存的Key值,Nginx根据Key值哈希,储存缓存内容到二级缓存目录内
#对不同的HTTP 状态码设置不同的缓存时间
proxy_cache_valid 200 304 12h;
proxy_cache_valid any 1m;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
#设定proxy_set_header Accept-Encoding 或者是后台服务器关闭gzip,该台机器才不会缓存被压缩的文件,造成乱码
proxy_set_header Accept-Encoding "none";
# proxy_set_header Accept-Encoding ""; 同上面一项相同
#设置proxy_cache 支持后台设定的expires , 即使支持HTTP头信息定义的缓存规则
proxy_ignore_headers "Cache-Control" "Expires";
if ( !-e $request_filename )
{
proxy_pass http://backend_server;
}注:
该项是如果client 请求的文件在cache 中保存,nginx 直接从cache中把对应的文件返还给client ,不会在去后端的Server 去取对应的文件
expires 1h; 设置过去的时间
}
# 设置php jsp cgi 不保存在cache中
location ~.*\.(php|jsp|cgi)?$
{
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_pass http://backend_server;
}
#设置js|css 在浏览器中过期的时间
location ~ .*\.(js|css)
{
expires 1h;
}
#设置清除所有的cache
location ~/purge(/.*)
{
allow 127.0.0.1;
allow 192.168.11.0/24;
deny all;
proxy_cache_purge cache_one $host$1$is_args$args;
}
}
}
相关文章推荐
- Nginx配置性能优化(转)
- Nginx配置性能优化
- 实战Nginx与PHP(FastCGI)的安装、配置与优化
- 实战Nginx与PHP(FastCGI)的安装、配置与优化
- Nginx配置性能优化
- [Nginx优化]分享nginx配置文件及优化说明
- 高流量站点NGINX与PHP-fpm配置优化
- Nginx配置性能优化
- Nginx配置性能优化
- 【转】实战Nginx与PHP(FastCGI)的安装、配置与优化
- Nginx-1.4.7+PHP5.5+Tcmalloc的安装配置以及优化
- 实战Nginx与PHP(FastCGI)的安装、配置与优化
- Nginx 0.7.x + PHP 5.2.6(FastCGI)+ MySQL 5.1 在128M小内存VPS服务器上的配置优化
- nginx反向代理配置及优化
- 实战Nginx与PHP(FastCGI)的安装、配置与优化
- Nginx与PHP(FastCGI)的安装、配置与优化
- nginx的优化配置
- nginx配置性能优化welly版
- (转)Nginx配置和内核优化 实现突破十万并发
- 绝对详细!Nginx基本配置、性能优化指南