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
来设置。
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的设置才能生效。
- root 表示在这整个server虚拟主机内,全部的root web根目录,注意要和locate {}下面定义的区分开来
- index 全局定义访问的默认首页地址。注意要和locate {}下面定义的区分开来。
location / {
root/Users/yangyi/www;
indexindex.php index.html index.htm;
}
- location /表示匹配访问根目录。 还有一种方式就是正则匹配,开启正则匹配这样:location ~ 后面加个~。
- root指令用于指定访问根目录时,虚拟主机的web目录,这个目录可以是相对路径(相对路径是相对于nginx的安装目录)。也可以是绝对路径。
- index用于设定我们只输入域名后访问的默认首页地址,有个先后顺序:index.php index.html index.htm,如果没有开启目录浏览权限,又找不到这些默认首页,就会报403错误。
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;
}
}
其他:
- Nginx虚拟目录alias和root目录
1)alias指定的目录是准确的,即location匹配访问的path目录下的文件直接是在alias目录下查找的;
2)root指定的目录是location匹配访问的path目录的上一级目录,这个path目录一定要是真实存在root指定目录下的;
- rewrite语法
指令语法:rewrite regex replacement[flag];
应用位置:server、location、if
rewrite是实现URL重定向的重要指令,他根据regex(正则表达式)来匹配内容跳转到replacement,结尾是flag标记
标记符号说明
last本条规则匹配完成后继续向下匹配新的location URI规则
break本条规则匹配完成后终止,不在匹配任何规则
redirect返回302临时重定向
permanent返回301永久重定向
- nginx location配置详细解释
推荐阅读
- Java|Java OpenCV图像处理之SIFT角点检测详解
- C语言浮点函数中的modf和fmod详解
- 虚拟DOM-Diff算法详解
- LSTM网络层详解及其应用实例
- OC:|OC: WKWebView详解
- 监控nginx
- vue中的条件判断详解v-if|vue中的条件判断详解v-if v-else v-else-if v-show
- Vue组件之事件总线和消息发布订阅详解
- JS截取字符串的方法详解
- C语言进阶栈帧示例详解教程