• nginx配置文件


    # 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处理

  • 相关阅读:
    字典dict
    数组处理
    switch语句
    java基础复习2
    位运算
    内存中占用的字节
    java基础复习
    常用快捷键
    利用Typora设计博客的方式
    java数据结构-排序算法-堆算法
  • 原文地址:https://www.cnblogs.com/Ting-light/p/11083573.html
Copyright © 2020-2023  润新知