常用配置说明
1 | #定义Nginx运行的用户和用户组 |
日志输出重定向
重定向日志输出到console
方式一:1
2
3# main 格式化方式
access_log /dev/stdout main;
error_log /dev/stderr main;
注意,在Docker中
/var/log/nginx/access.log -> /dev/stdout
/var/log/nginx/error.log -> /dev/stderr
方式二:1
2ln -sf /dev/stdout /var/log/nginx/access.log
ln -sf /dev/stderr /var/log/nginx/error.log
性能优化
参考链接:http://www.oschina.net/translate/nginx-setup?print
events
1 | events { |
worker_connections:一个worker进程同时打开的最大连接数,最大客户数也由系统的可用socket连接数限制(~ 64K)。
multi_accept:如果设置为on,告诉nginx收到一个新连接通知后接受尽可能多的连接。
http
1 | http { |
server_tokens 并不会让nginx执行的速度更快,但它可以关闭在错误页面中的nginx版本数字,这样对于安全性是有好处的。
sendfile可以让sendfile()发挥作用。sendfile()可以在磁盘和TCP socket之间互相拷贝数据(或任意两个文件描述符)。Pre-sendfile是传送数据之前在用户空间申请数据缓冲区。之后用read()将数据从文件拷贝到这个缓冲区,write()将缓冲区数据写入网络。sendfile()是立即将数据从磁盘读到OS缓存。因为这种拷贝是在内核完成的,sendfile()要比组合read()和write()以及打开关闭丢弃缓冲更加有效。
tcp_nopush 告诉nginx在一个数据包里发送所有头文件,而不一个接一个的发送
tcp_nodelay 告诉nginx不要缓存数据,而是一段一段的发送–当需要及时发送数据时,就应该给应用设置这个属性,这样发送一小块数据信息时就不能立即得到返回值。
gzip是告诉nginx采用gzip压缩的形式发送数据。这将会减少我们发送的数据量。
gzip_min_length设置对数据启用压缩的最少字节数。如果一个请求小于1000字节,我们最好不要压缩它,因为压缩这些小的数据会降低处理此请求的所有进程的速度。
gzip_comp_level设置数据的压缩等级。这个等级可以是1-9之间的任意数值,9是最慢但是压缩比最大的。我们设置为4,这是一个比较折中的设置。
gzip_type设置需要压缩的数据格式。
HTTPS
- HTTP强制跳转HTTPS
1 | server { |