关于Nginx的主配置文件(/etc/nginx/nginx.conf)
Nginx 的配置文件主要分为4部分:
main (全局设置) -> 此部分设置的指令将影响其它所有设置
server (主机设置) -> 主要用于指定 "主机" 和 "端口"
upstream (负载均衡设置) -> 用于负载均衡location (URL 匹配特定位置的设置)
location (URL 匹配特定位置的设置) -> 匹配网页文件的类型和位置
# vi /etc/nginx/nginx.conf (内容如下,有一部分为在原有基础之上添加上去的)
-
#user nobody; 指定以哪个用户的身份运行服务
-
worker_processes 1; -->启动几个工作进程(最好等于CPU的核数,或二倍))
-
-
#error_log logs/error.log; 定义错误日志的存放位置
-
#error_log logs/error.log notice; 定义什么级别的错误才会记录到日志中(日志的输出级别有:debug、info、notice、warning、error、crit等)
-
#error_log logs/error.log info;
-
-
#pid logs/nginx.pid; nginx的PID文件存放位置
-
-
-
events { 在这里还可以添加 "use epoll;" 来指定Nignx的工作模式,(Nginx支持的工作模式有 select、poll、epoll、kqueue、rtsig等)
-
# use epoll; select 和 poll 都是标准的工作模式,epoll 和 kqueue 是高效的工作模式(epoll 用于linux上,kqueue 用于BSD上)
-
worker_connections 1024; --> 每一个工作进程能接受的连接个数(请求) 该值受系统进程最大打开文件数限制,需要使用命令"ulimit -n 50000"设置 (/etc/sysctl.conf中添加fs.file-max=是无效的,可添加至rc.local开机设定)
-
}
关于http的相关设定,若想要使用mail的功能,在编译的时候就需要指定 --with-mail --with-mail_ssl_module --without-mail_pop3_module --without-mail_imap_module --without-mail_smtp_module 这几个选项
-
http {
-
include mime.types; 实现对配置文件所包含的文件类型的设定,mine.types内定义了各文件类型映像
-
default_type application/octet-stream; 默认的数据类型,当类型未定义时使用二进制流的方式,比如未安装PHP时,是不予解析,用浏览器访问则出现下载窗口
-
-
#log_format main '$remote_addr - $remote_user [$time_local] "$request" ' 定义日志的输出格式,默认是使用与apache相兼容的日志格式(common)
-
# '$status $body_bytes_sent "$http_referer" '
-
# '"$http_user_agent" "$http_x_forwarded_for"';
-
-
# log_format download '$remote_add - $remote_user [$time_local] "$reuest"'
-
# '$status $body_bytes_sent "$http_referer" '
-
# '"$http_user_agent" "$http_range"'
-
# '"$sent_http_content_range"';
-
-
#access_log logs/access.log main; nginx的日志存放位置 ( main 是日志输出格式的名称,引用上面定义的日志格式)
-
# client_max_body_size 20m; 设置允许客户端请求的最大单个文件的字节数,超出此值,报413 Request Entity Too Large
-
# client_header_buffer_size 32k; 用于指定来自客户端请求头的headerbuffer 大小,对于大多数请求,1KB 的缓冲区大小已经足够,如果自定义了消息头可以增加缓冲区的大小
-
# large_client_header_buffers 4 32k; "4" 为个数,"128k" 为大小,默认是4k。申请4个128k。当http 的URI太长或者request header过大时会报414 Request URI too large或400 bad request,这是很有可能是cookie中写入的值太大造成的,因为header中的其他参数的size一般比较固定,只有cookie可能被写入较大的数据,这时可以调大上述两个值,相应的浏览器中cookie的字节数上限会增大。
-
sendfile on; 打开系统函数sendfile()的功能,将tcp_nopush和tcp_nodely两个指令设置为on 用于防止网络阻塞
-
#tcp_nopush on; 打开linux(仅linux下)下TCP_CORK,sendfile打开时才有效,用来发送系统HTTP response headers,设置该选项的目的是告诉TCP协议不要仅仅为了清空发送缓存而发送报文段。通常应该设置TCPNOPUSH插口选项。这样,当请求长度超过报文段最大长度时,协议就会尽可能发出满长度的报文段。这样可以减少报文段的数量,减少的程度取决于每次发送的数据量
-
#tcp_nodelay on;
-
-
#keepalive_timeout 0;
-
keepalive_timeout 65; 保持连接超时时间
上述四项可以有效提高文件传输性能,用sendfile()函数来转移大量数据,协议会需预先解析数据包报头部分信息,正常情况下报头很小,而且套接字上设置了TCP_NODELAY。有报头的包将被立即传输,在某些情况下,因为这个包成功地被对方收到后需要请求对方确认。这样,大量数据的传输就会被延迟而且产生大量不必要的网络流量交换。 而如果我们在socket上设置了 TCP_CORK,就像个管道塞住塞子,则带有报头的包会填满数据,所有数据根据大小填充,自动通过数据包发送出去,但在数据完成传输时,需要打开塞子。 如果你能一次发送HTTP响应的头和正文等数据集合,那这样就能使这些数据不存在延迟
-
# gzip on; 是否启用压缩功能,实时压缩输出数据流
-
# gzip_min_length 1k; 允许压缩的页面的最小字节数,建议设置成大于 1K 的字节数 ( 页面字节数从header 头的Content-Length 中获取的,默认值为 0 ,不管页面多大都进行压缩)
-
# gzip_buffers 4 16k; 申请4 个单位为 16K 的内存作为压缩数结果的缓存。(默认是申请与原始数据大小相同的内存空间来存储gzip的压缩结果)
-
# gzip_http_version 1.1; 设置识别HTTP协议的版本,默认是1.1,大部分浏览器已经支持gzip解压
-
# gzip_comp_level 2; 设置压缩比(1 压缩比最小,9 压缩比最大)
-
# gzip_types text/plain application/x-javascript text/css application/xml; 指定压缩的类型(无论是否指定, "text/html" 类型一定是会被压缩的)
-
# gzip_vary on; 可以让前端缓存服务器缓存经过 gzip 压缩的页面,如:Squid
-
-
# gzip_proxied expired no-cache no-store private no_last_modified no_etag auth any 该选项在做反向代理时设定压缩,后面参数为验证的header头信息,再做相应的压缩处理,关闭为off
-
# limit_zone connlimit $binary_remote_addr 10m; 定义名为connlimit的并发连接数限制空间,存储10M的带有二进制IP的会话信息,每个会话信息是32bytes,10M应该可以记录320000个会话。配合limit_conn 使用。
-
-
server { --> 关于虚拟主机的相关设定
-
listen 80; 监听的端口
-
server_name localhost; 指定IP地址或域名(主机名,多域名用空格隔开)
-
-
#limit_conn connlimit 20; 限制一个IP只能最多只能发起20个连接,超过报 503 Service unavailable
-
#charset koi8-r; 设置网页的默认编码格式
-
-
#access_log logs/host.access.log main; 可以自定义虚拟主机的日志存放位置,main 用于指定输出格式
-
-
location / { 定义路径(和apache下的DocumentRoot 和 Directory 类似)URL的根,网站的根目录
-
root html; 通过 URL的根所能访问到的每一个网页文件位于当前操作系统的哪个位置(相对于软件的安装目录,也可以指定绝对路径)
-
index index.html index.htm; 设定默认访问的首页地址
-
}
-
-
#location /downloads/ {
-
# limit_rate 20k; 为某个特定路径限速
-
# root /web/downloads/;
-
#}
-
-
#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$ { php与nginx 结合使用时就需要启用
-
# proxy_pass http://127.0.0.1; 把用户请求的php页面的所有内容转交给本地服务器的哪个端口来处理
-
#}
-
-
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 通过FastCGI的方式与PHP程序沟通
-
#
-
#location ~ \.php$ {
-
# root html;
-
# fastcgi_pass unix:/tmp/php-cgi.sock; SOCKET方式转交fastcgi处理
-
# fastcgi_pass 127.0.0.1:9000; 9000端口方式fastcgi ,把用户请求的php页面的所有内容提交给本地服务器的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; 拒绝所有用户访问以 ".ht" 开头的文件
-
#}
-
}
-
# 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 基于SSL的相关设定
-
#
-
#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;
-
# }
-
#}
-
-
}
(责任编辑:IT) |