# nginx.conf文件示例
user nobody; worker_processes 8; error_log varlog/nginx/error.log error; #pid logs/nginx.pid events { use epoll; worker_connections 50000; } http { include mime.types; default_type application/octet-stream; log_format main '$remote_addr [$time_local] "$request" '; access_log logs/access.log main buffer=32k; ... }

所有的事件类配置都要在events中

events {...

}

http {

  upstream backend {

    server 127.0.0.1:8080;

  }

  gzip on;

  server {

      ...

      location  /webstatic {

            gzip off;

            }

  }

}

 

块配置项可以嵌套。内层块 直接继承外层块 ,当发生冲突时,以内层为准,如上面的gzip 在外层为 on ,到location内层时 gzip为off 

块配置项由一个块配置项名和一对大括号组成

基本的配置项语法格式为:

配置项名 配置项值1 配置项值2 ...;

在行首的是配置名,这些配置名必须是nginx的某一个模块需要处理的,否则nginx会认为配置文件出现里非法配置名

配置项名结束后以空格作为分隔符

配置项值可以是数字,字符串,正则表达式,可以只有一个值或多个值, 每行配置的结尾需要加上分号

如果配置项值中包括语法符号如空格,需要使用单/双 引号括住配置项值

 

nginx.conf中的注释以 #开头

 

配置项的单位

指定空间大小时可使用 :          K/k     表示KB       M/m    表示 MB

时间单位可使用:     ms(毫秒)    s(秒)   m(分钟)   h(小时)  d(天)    w(周,7天)  M(月,30天)   y(年,365天) 

 

配置项中使用变量(只有某些模块支持这种 使用变量的写法)

log_format  main  '$remote_addr- $remote_user  [$time_local]  "$request" ' ;

上例中 $remote_addr表示一个变量 remote_addr 

 

nginx服务的基本配置

daemon on|off;                                      默认 daemon on; 设置nginx是否以守护进程(脱离终端在后台运行的进程)方式运行

master_process on|off;                        默认master_process on;   生产环境中nginx都是以一个master进程管理多个worker进程的方式运行;

                  如果关闭 ,则不会fork出worker子进程,而是master进程自身来处理请求

error_log pathfile level ;                     默认为 logs/error.log error; 设置nginx  err日志的位置与等级 ,级别有debug,info,notice,warn error,crit,alert,emerg

 debug_connection[IP|CIDR]               改配置属于事件配置,必须放在events{...}中才有效,可以是ip地址或cidr地址。需确保编译执行congfigure时是使用了--with-debug参数。

events {

    debug_connection 10.224.66.14;

    debug_connection 10.224.57.0/24;

}

这样只有来自上面IP地址的请求才会输出debug级别的日志,其他请求仍然沿用error_log中配置的日志级别

 

worker_rlimit_core size;                    限制core dump核心转储文件的大小

working_directory  path;                    worker进程的工作目录,用于设置coredump文件的存储目录,需确保worker进程有权限向working_directory指定的目录写入文件

 

include pathfile;                                 导入其他配置文件中的配置 ,pathfile可以是绝对路径 也可以是相对路径(相对于nginx.conf所在的目录)如

include mime.types;

include vhost/*.conf;

参数值可以是一个明确的文件名,也可以是含有通配符*的文件名,同时可以一次嵌入多个配置文件

 

pid  pathfile;                                       默认pid logs/nginx.pid;     需确保nginx有权在相应的目标中创建pid文件

user username[ groupname];                默认 user nobody nobody;  设置master进程启动后,fork出的worker进程运行在哪个用户和用户组下,不设置用户组时,用户组与用户名相同

 

worker_processes number;                  默认worker_processes 1 ;在master/worker运行方式下,定义worker进程的个数

 

use [ kqueue|rtsig|epoll|/dev/poll|select|poll|eventport];          默认nginx会自动使用最合适的事件模型

 

worker_connections number;               定义每个worker进程可以同时处理的最大连接数

 

 

静态web服务器

一个典型的静态web服务器还会包含多个server块和location块

 

http {
        gzip on;
        upstream {
                ...
         }
         ...
       
        server {
                    listen localhost:80;
                    ...
                    location /webstatic {
                                  if ...
                                      {
                                        ...
                                  }
                                  root opt/web/resource;
                                  ...
                     }
                     location ~* .(jpg|jpeg|png|jpe|gif)$ {
                                                                              ...
                     }
       }
       server {
                  ...
       }
}

 

 

 

所有的http配置项都必须直属于 http块,server块,location块,upstream块或 if块等

有些配置项可以任意地出现在某一个块中,有些配置项只能出现在特定的块中。

静态的web服务器提供了许多功能: 虚拟主机与请求的分发,文件路径的定义,内存及磁盘资源的分配,网络连接的设置,MIME类型设置,客户端请求的限制,文件操作的优化,客户端请求的特殊处理。

 

虚拟主机与请求的分发

  通常存在多个主机域名对应同一个IP地址,每个server块就是一个虚拟机,它只处理与之相对应的主机域名请求

这样一台服务器上的nginx就能以不同的方式处理访问不同主机域名的http请求了

server{

    listen address:port 

默认为listen 80;         listen参数决定nginx如何监听端口,在listen后可以只加IP地址,端口或主机名 

例:

listen 127.0.0.1:8000;

listen 127.0.0.1; 

listen 8000;

listen *:8000;

listen localhost:8000;

如果是IPV6地址,可以写成

listen [::]:8000;

listen [fe80::1];

listen [:::a8c9:1234]:80;

 

地址和端口后还可以加上其他参数,如:

listen 43 default_serer ssl;

listen 127.0.0.1 default_server accept_filter=dataready backlog=1024;

 

default/default_server  :将所在server块作为整个web服务的默认server块,如果没有设置,则以第一个server块为默认server块。

            无法匹配配置文件中的任何主机域名的请求,会由默认server处理

 posted on 2019-08-06 14:12  庭明  阅读(286)  评论(0编辑  收藏  举报