Nginx的学习,指令配置详解

前言之前的文章讲解了Nginx的安装,介绍等,可以看下我之前的文章,接下来讲解nginx的配置和指令的使用 。
全局属性配置

Nginx的学习,指令配置详解

文章插图
 
  • #user nobody,user是个主模块指令,指定Nginx Worker进程运行用户以及用户组,默认由nobody账号运行 。
 
  • error_log是个主模块指令,用来定义全局错误日志文件 。日志输出级别有debug、info、notice、warn、error、crit可供选择,其中,debug输出日志最为最详细,而crit输出日志最少 。
  • pid是主模块指令,用来指定进程id的存储文件位置
  • worker_processes 1; #启动进程数,根据你的电脑CPU数,1个,4个或8个
events:工作模式及连接数上限
  • use是个事件模块指令,用来指定Nginx的工作模式 。Nginx支持的工作模式有select、poll、kqueue、epoll、rtsig和/dev/poll 。其中select和poll都是标准的工作模式,kqueue和epoll是高效的工作模式,不同的是epoll用在linux平台上,而kqueue用在BSD系统中 。对于Linux系统,epoll工作模式是首选 。
  • worker_connections也是个事件模块指令,用于定义Nginx每个进程的最大连接数,默认是1024.最大客户端连接数由worker_processes和worker_connections决定,即Max_client=worker_processes*worker_connections,在作为反向代理时,max_clients变为:max_clients = worker_processes * worker_connections/4 。
    进程的最大连接数受Linux系统进程的最大打开文件数限制,在执行操作系统命令“ulimit -n 65536”后worker_connections的设置才能生效 。
http:处理http请求的一个应用配置段http {includemime.types;default_typeApplication/octet-stream;#log_formatmain'$remote_addr - $remote_user [$time_local] "$request" '#'$status $body_bytes_sent "$http_referer" '#'"$http_user_agent" "$http_x_forwarded_for"';#access_loglogs/access.logmain;sendfileon;#tcp_nopushon;#keepalive_timeout0;keepalive_timeout65;#gzipon;server {listen80;server_namelocalhost;#charset koi8-r;#access_loglogs/host.access.logmain;location / {roothtml;indexindex.html index.htm;}#error_page404/404.html;# redirect server error pages to the static page /50x.html#error_page500 502 503 504/50x.html;location = /50x.html {roothtml;}# proxy the php scripts to Apache listening on 127.0.0.1:80##location ~ .php$ {#proxy_passhttp://127.0.0.1;#}# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000##location ~ .php$ {#roothtml;#fastcgi_pass127.0.0.1:9000;#fastcgi_indexindex.php;#fastcgi_paramSCRIPT_FILENAME/scripts$fastcgi_script_name;#includefastcgi_params;#}# deny access to .htaccess files, if Apache's document root# concurs with nginx's one##location ~ /.ht {}
  • include mime.types;引用mime.types,这个类型定义了很多,当web服务器收到静态的资源文件请求时,依据请求文件的后缀名在服务器的MIME配置文件中找到对应的MIME Type,根据MIME TYPE设置并response响应类型(Content-type) 。
常见的mime.types:
 
Nginx的学习,指令配置详解

文章插图
 
default_type application/octet-stream;定义的数据流,有的时候默认类型可以指定为text,这跟我们的网页发布还是资源下载是有关系的 。
log_format main...;用于指定Nginx日志的输出格式 。main为此日志输出格式的名称,可以在下面的access_log指令中引用 。
$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"',
远程ip – 远程用户/用户时间 请求方法(get/post) 状态 请求body长度 referer来源信息 http-user-agent 用户代理 被转发的原始请求IP,由这些属性组成日志格式 。
Nginx的学习,指令配置详解

文章插图
系统日志默认配置
sendfile on;指定NGINX是否调用这个函数来输出文件,对于普通的文件我们必须设置为ON,如果NGINX专门做为一个下载端的话可以关掉,好处是降低磁盘与网络的IO处理数及系统的UPTIME 。
【Nginx的学习,指令配置详解】tcp_nopush on; 防止网络阻塞
autoindex on;开启目录列表访问,适合下载服务器
tcp_nodelay on;提高数据的实时响应性
keepalive_timeout;根据实际情况设置值,超时时间,客户端到服务端的连接持续有效时间,60秒内可避免重新建立连接,时间也不能设太长,太长的话,若请求数10000,都占用连接会把服务托死 。
gzip on;NGINX可以压缩静态资源,比例我的静态资源有10M,压缩后只有2M,那么浏览器下载的就少了 。


推荐阅读