nginx配置文件详解

基本就分为以下几块:

main
events   {
  ....
}
http        {
  ....
  upstream myproject {
    .....
  }
  server  {
    ....
    location {
        ....
    }
  }
  server  {
    ....
    location {
        ....
    }
  }
  ....
}

nginx配置文件主要分为六个区域:
main(全局设置)、events(nginx工作模式)、http(http设置)、
sever(主机设置)、location(URL匹配)、proxy_pass(反向代理)、upstream(负载均衡服务器设置)。

1. main模块

  • worker_rlimit_nofile 用于指定一个nginx进程可以打开的最多文件描述符数目,这里是65535,需要使用命令ulimit -n 65535来设置。

2. events 模块

events {
    use epoll; #linux平台
    worker_connections  1024;
}
  • use用来指定Nginx的工作模式。Nginx支持的工作模式有select、poll、kqueue、epoll、rtsig和/dev/poll。其中select和poll都是标准的工作模式,kqueue和epoll是高效的工作模式,不同的是epoll用在Linux平台上,而kqueue用在BSD系统中,因为Mac基于BSD,所以Mac也得用这个模式,对于Linux系统,epoll工作模式是首选。
  • worker_connections用于定义Nginx每个进程的最大连接数,即接收前端的最大请求数,默认是1024。最大客户端连接数由worker_processes和worker_connections决定,即Max_clients=worker_processes*worker_connections,在作为反向代理时,Max_clients变为:Max_clients = worker_processes * worker_connections/4。
    进程的最大连接数受Linux系统进程的最大打开文件数限制,在执行操作系统命令ulimit -n 65536后worker_connections的设置才能生效。

3. server 模块

  • root 表示在这整个server虚拟主机内,全部的root web根目录,注意要和locate {}下面定义的区分开来
  • index 全局定义访问的默认首页地址。注意要和locate {}下面定义的区分开来。

4. location 模块

location / {
    root   /Users/yangyi/www;
    index  index.php index.html index.htm;
}
  • location /表示匹配访问根目录。 还有一种方式就是正则匹配,开启正则匹配这样:location ~ 后面加个~。
  • root指令用于指定访问根目录时,虚拟主机的web目录,这个目录可以是相对路径(相对路径是相对于nginx的安装目录)。也可以是绝对路径。
  • index用于设定我们只输入域名后访问的默认首页地址,有个先后顺序:index.php index.html index.htm,如果没有开启目录浏览权限,又找不到这些默认首页,就会报403错误。

4.1 location语法规则

location [=|~|~*|^~] /uri/ {

}

= 开头表示精确匹配
^~ 开头表示uri以某个常规字符串开头,理解为匹配 url路径即可。nginx不对url做编码,因此请求为/static/20%/aa,可以被规则^~ /static/ /aa匹配到(注意是空格)。以xx开头
~ 开头表示区分大小写的正则匹配                     以xx结尾
~* 开头表示不区分大小写的正则匹配                以xx结尾
!~和!~*分别为区分大小写不匹配及不区分大小写不匹配 的正则
/ 通用匹配,任何请求都会匹配到。

匹配顺序:
首先精确匹配 =-》其次以xx开头匹配^~-》然后是按文件中顺序的正则匹配-》最后是交给 / 通用匹配。
当有匹配成功时候,停止匹配,按当前匹配规则处理请求。

4.2反向代理

通过访问 www.123.com:80 跳到 127.0.0.1:8080

server {
        listen       80;
        server_name  www.123.com;

        location / {
            proxy_pass http://127.0.0.1:8080;
            index  index.html index.htm index.jsp;
        }
    }

5. upstream 模块

upstream iyangyi.com{
    ip_hash;
    server 192.168.12.1:80;
    server 192.168.12.2:80 down;
    server 192.168.12.3:8080  max_fails=3  fail_timeout=20s;
    server 192.168.12.4:8080;
}

5.1负载均衡

upstream test_server {
      server 192.168.13.133:8080;
      server 192.168.13.139:8080;
    }

 server {
        listen 80;
        server_name localhost;
        location / {
           proxy_pass  http://test_server;
        }
}

其他:

  1. Nginx虚拟目录alias和root目录
    1)alias指定的目录是准确的,即location匹配访问的path目录下的文件直接是在alias目录下查找的;
    2)root指定的目录是location匹配访问的path目录的上一级目录,这个path目录一定要是真实存在root指定目录下的;

  2. rewrite语法
    指令语法:rewrite regex replacement[flag];
    应用位置:server、location、if
    rewrite是实现URL重定向的重要指令,他根据regex(正则表达式)来匹配内容跳转到replacement,结尾是flag标记

rewrite 最后一项flag参数:

标记符号    说明
last        本条规则匹配完成后继续向下匹配新的location URI规则
break       本条规则匹配完成后终止,不在匹配任何规则
redirect    返回302临时重定向
permanent   返回301永久重定向
  1. nginx location配置详细解释

你可能感兴趣的:(nginx配置文件详解)