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_connections1024; }

  • 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; indexindex.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 { listen80; server_namewww.123.com; location / { proxy_pass http://127.0.0.1:8080; indexindex.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:8080max_fails=3fail_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_passhttp://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标记
【nginx配置文件详解】rewrite 最后一项flag参数:
标记符号说明 last本条规则匹配完成后继续向下匹配新的location URI规则 break本条规则匹配完成后终止,不在匹配任何规则 redirect返回302临时重定向 permanent返回301永久重定向

  1. nginx location配置详细解释

    推荐阅读