zoukankan      html  css  js  c++  java
  • nginx配置文件解析

    默认的 nginx 配置文件 nginx.conf 内容如下:

      1 #user  nobody;
      2 worker_processes  1;
      3 
      4 #error_log  logs/error.log;
      5 #error_log  logs/error.log  notice;
      6 #error_log  logs/error.log  info;
      7 
      8 #pid        logs/nginx.pid;
      9 
     10 
     11 events {
     12     worker_connections  1024;
     13 }
     14 
     15 
     16 http {
     17     include       mime.types;
     18     default_type  application/octet-stream;
     19 
     20     #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
     21     #                  '$status $body_bytes_sent "$http_referer" '
     22     #                  '"$http_user_agent" "$http_x_forwarded_for"';
     23 
     24     #access_log  logs/access.log  main;
     25 
     26     sendfile        on;
     27     #tcp_nopush     on;
     28 
     29     #keepalive_timeout  0;
     30     keepalive_timeout  65;
     31 
     32     #gzip  on;
     33 
     34     server {
     35         listen       80;
     36         server_name  localhost;
     37 
     38         #charset koi8-r;
     39 
     40         #access_log  logs/host.access.log  main;
     41 
     42         location / {
     43             root   html;
     44             index  index.html index.htm;
     45         }
     46 
     47         #error_page  404              /404.html;
     48 
     49         # redirect server error pages to the static page /50x.html
     50         #
     51         error_page   500 502 503 504  /50x.html;
     52         location = /50x.html {
     53             root   html;
     54         }
     55 
     56         # proxy the PHP scripts to Apache listening on 127.0.0.1:80
     57         #
     58         #location ~ .php$ {
     59         #    proxy_pass   http://127.0.0.1;
     60         #}
     61 
     62         # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
     63         #
     64         #location ~ .php$ {
     65         #    root           html;
     66         #    fastcgi_pass   127.0.0.1:9000;
     67         #    fastcgi_index  index.php;
     68         #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
     69         #    include        fastcgi_params;
     70         #}
     71 
     72         # deny access to .htaccess files, if Apache's document root
     73         # concurs with nginx's one
     74         #
     75         #location ~ /.ht {
     76         #    deny  all;
     77         #}
     78     }
     79 
     80 
     81     # another virtual host using mix of IP-, name-, and port-based configuration
     82     #
     83     #server {
     84     #    listen       8000;
     85     #    listen       somename:8080;
     86     #    server_name  somename  alias  another.alias;
     87 
     88     #    location / {
     89     #        root   html;
     90     #        index  index.html index.htm;
     91     #    }
     92     #}
     93 
     94 
     95     # HTTPS server
     96     #
     97     #server {
     98     #    listen       443 ssl;
     99     #    server_name  localhost;
    100 
    101     #    ssl_certificate      cert.pem;
    102     #    ssl_certificate_key  cert.key;
    103 
    104     #    ssl_session_cache    shared:SSL:1m;
    105     #    ssl_session_timeout  5m;
    106 
    107     #    ssl_ciphers  HIGH:!aNULL:!MD5;
    108     #    ssl_prefer_server_ciphers  on;
    109 
    110     #    location / {
    111     #        root   html;
    112     #        index  index.html index.htm;
    113     #    }
    114     #}
    115 
    116 }
    View Code

    下面给大家上一个配置文件,作为理解。

    ########### 每个指令必须有分号结束。#################
    #user administrator administrators;  #配置用户或者组,默认为nobody nobody。
    #worker_processes 2;  #允许生成的进程数,默认为1
    #pid /nginx/pid/nginx.pid;   #指定nginx进程运行文件存放地址
    error_log log/error.log debug;  #制定日志路径,级别。这个设置可以放入全局块,http块,server块,级别以此为:debug|info|notice|warn|error|crit|alert|emerg
    events {
        accept_mutex on;   #设置网路连接序列化,防止惊群现象发生,默认为on  惊群现象:一个网路连接到来,多个睡眠的进程被同事叫醒,但只有一个进程能获得链接,这样会影响系统性能。
        multi_accept on;  #设置一个进程是否同时接受多个网络连接,默认为off
        #use epoll;      #事件驱动模型,select|poll|kqueue|epoll|resig|/dev/poll|eventport
        worker_connections  1024;    #最大连接数,默认为512
    }
    http {
        include       mime.types;   #文件扩展名与文件类型映射表
        default_type  application/octet-stream; #默认文件类型,默认为text/plain
        #access_log off; #取消服务日志    
        log_format myFormat '$remote_addr–$remote_user [$time_local] $request $status $body_bytes_sent $http_referer $http_user_agent $http_x_forwarded_for'; #自定义格式
        access_log log/access.log myFormat;  #combined为日志格式的默认值
        sendfile on;   #允许sendfile方式传输文件,默认为off,可以在http块,server块,location块。
        sendfile_max_chunk 100k;  #每个进程每次调用传输数量不能大于设定的值,默认为0,即不设上限。
        keepalive_timeout 65;  #连接超时时间,默认为75s,可以在http,server,location块。
    
        upstream mysvr {   
          server 127.0.0.1:7878;
          server 192.168.10.121:3333 backup;  #热备
        }
        error_page 404 https://www.baidu.com; #错误页
        server {
            keepalive_requests 120; #单连接请求上限次数。
            listen       4545;   #监听端口
            server_name  127.0.0.1;   #监听地址       
            location  ~*^.+$ {       #请求的url过滤,正则匹配,~为区分大小写,~*为不区分大小写。
               #root path;  #根目录
               #index vv.txt;  #设置默认页
               proxy_pass  http://mysvr;  #请求转向mysvr 定义的服务器列表
               deny 127.0.0.1;  #拒绝的ip
               allow 172.18.5.54; #允许的ip           
            } 
        }
    }
    • 1、全局块:配置影响nginx全局的指令。一般有运行nginx服务器的用户组,nginx进程pid存放路径,日志存放路径,配置文件引入,允许生成worker process数等。
    • 2、events块:配置影响nginx服务器或与用户的网络连接。有每个进程的最大连接数,选取哪种事件驱动模型处理连接请求,是否允许同时接受多个网路连接,开启多个网络连接序列化等。
    • 3、http块:可以嵌套多个server,配置代理,缓存,日志定义等绝大多数功能和第三方模块的配置。如文件引入,mime-type定义,日志自定义,是否使用sendfile传输文件,连接超时时间,单连接请求数等。
    • 4、server块:配置虚拟主机的相关参数,一个http中可以有多个server。
    • 5、location块:配置请求的路由,以及各种页面的处理情况。

    几个常见配置项:

    • 1.$remote_addr 与 $http_x_forwarded_for 用以记录客户端的ip地址;
    • 2.$remote_user :用来记录客户端用户名称;
    • 3.$time_local : 用来记录访问时间与时区;
    • 4.$request : 用来记录请求的url与http协议;
    • 5.$status : 用来记录请求状态;成功是200;
    • 6.$body_bytes_s ent :记录发送给客户端文件主体内容大小;
    • 7.$http_referer :用来记录从那个页面链接访问过来的;
    • 8.$http_user_agent :记录客户端浏览器的相关信息;
  • 相关阅读:
    noip模拟赛 花
    noip模拟赛 柜(暴力)
    noip模拟赛 读
    Java基础知识强化47:StringBuffer类之StringBuffer的三个面试题
    Java基础知识强化46:StringBuffer类之判断一个字符串是否对称案例
    Java基础知识强化45:StringBuffer类之字符串反转的案例
    Java基础知识强化44:StringBuffer类之把数组拼接成指定格式的字符串的案例
    Java基础知识强化43:StringBuffer类之StringBuffer和String的相互转化
    Java基础知识强化42:StringBuffer类之StringBuffer的截取功能
    Java基础知识强化41:StringBuffer类之StringBuffer的反转功能
  • 原文地址:https://www.cnblogs.com/ustc-anmin/p/10878560.html
Copyright © 2011-2022 走看看