nginx的基本配置

以下是看完Nginx入门教程之后的学习记录.

user www www;
#顶层配置信息管理服务器级别行为
worker_processes 1;

error_log /data/wwwlogs/error_nginx.log crit;
pid /var/run/nginx.pid;
worker_rlimit_nofile 51200;ent

#event指令与事件模型有关,配置处理连接有关信息
events {
  use epoll;
  worker_connections 51200;
  multi_accept on;
}

#http指令处理http请求
http {
  #引入mime type映射(reponse头里指定了mime类型是什么,是通过的文件扩展名和响应类型来实现的.)
  include mime.types;
  #default_type指定请求的文件类型在映射表里不存在的情况(默认使用的mime类型,此处为二进制类型).
  default_type application/octet-stream;

  sendfile on;
  #tcp_nopush on;

  keepalive_timeout 65;

######################## default ############################
#server表示一个虚拟主机,一台服务器可以配置多个虚拟主机
  server {
  #监听的端口号
  listen 80;
  #识别的域名(根据servername的不同来判断请求交给哪个server来处理)
  server_name _;
  #一个关键设置,与url参数乱码问题有关
  charset utf-8;
  access_log /data/wwwlogs/access_nginx.log combined;
  root /data/wwwroot/default;
  index index.html index.htm index.php;



 #location表达式.
 #syntax:location [=|~|~*|^-|@] /url/{...}
 #分为两种匹配模式,普通字符串匹配,正则匹配
 #无开头引导字符或以=开头表示普通字符串匹配
 #以~或~*开头表示正则匹配,~*表示不区分大小写匹
 #多个location时匹配规则
 #总是以先普通后正则的原则,只是别URI部分,例如请求为/test/1/abc.do?arg=xxx
 #1.先查找是否=开头的精确匹配,即location = /test/1/abc.do{...}
 #2.再查找普通匹配,以最大前缀为规则,如以下两个location
 #    location /test/{...}
 #    location /test/1/{...}
 #匹配最后一项
 #3.匹配到一个普通格式之后,搜索并未结束,而是暂存当前结果,并继续再搜索正则模式
 #4.在所有正则模式location中找到第一个匹配项后,一次匹配项为最终结果
 #  所以正则匹配项匹配规则受定义前后顺序的影响,但不普通规则不会
 #5.如果未找到正则匹配项,则以3中缓存的结果为最终结果
 #6.如果一个匹配都没有,返回404

 #location = / {...}与location {...}的差别
 #前一个是精确匹配,只响应/请求,所有/xxx类请求不会以前缀匹配形式匹配到它
 #而后一个正相反,所有请求必然都是以/开头,所以没有其它匹配结果时一定会执行到它

 #location ^~ / {...} ^~的意思是非正则,表示匹配到此模式之后不再继续进行这则搜索
 #所以如果有这样的配置,相当于你关闭了正则匹配
 #因为一个请求在普通匹配规则下没有得到其它普通匹配结果时,最终匹配到这里
 #而这个^~指令又相当于不允许正则,相当于匹配到此为止  /test/abc.jsp 
  location /nginx_status {
    stub_status on;
    access_log off;
    #allow all; 允许请求
    #deny all; 允许请求,返回403
    }
  location ~ [^/]\.php(/|$) {
    #fastcgi_pass remote_php_ip:9000;
    fastcgi_pass unix:/dev/shm/php-cgi.sock;
    fastcgi_index index.php;
    include fastcgi.conf;
    }
  location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|flv|mp4|ico)$ {
    expires 30d;
    access_log off;
    }
  location ~ .*\.(js|css)?$ {
    expires 7d;
    access_log off;
    }
  location ~ /\.ht {
    deny all;
    }
  }

  #定义各类错误页面
  error_page 404   /404.html;

  error_page 500 502 503 504 /50x.html
  location = /50x.html{
      root html;
  }

#类似于变量定义
#error_pagr 403 http://www.zhishe.pub 这种定义不允许,所以利用@实现(其具体作用是出现403错误的时候,不是指向具体的某个页面,而是指向里面定义的一个网站.)
error_page 403 @page403;
location @page403{
    proxy_pass http://www.zhishe.pub;
}
########################## vhost #############################
  include vhost/*.conf;
}

你可能感兴趣的:(Nginx)