Nginx的配置文件是其核心所在,它定义了Nginx服务器的各种行为和参数。通过灵活配置,可以实现反向代理、负载均衡、静态资源服务等功能。
1
Nginx的配置文件介绍
1、nginx.conf介绍
Nginx的配置文件是nginx.conf,它在/data/program/nginx/conf目录下
[root@base-1 conf]# pwd
/data/program/nginx/conf
nginx.conf配置文件里有3个部分,分别是:全局块,events块,http块;在http块中又包含http全局块,多个server块;每个server块中又包含server全局块以及多个location块。
- 全局块是配置文件从开始到events块之间的内容,主要有worker_processes,它表示工作进程数,一般设置为服务器CPU的核数。
- events块主要有worker_connections,它表示Nginx服务器与用户的网络连接数,Nginx支持的网络连接数就是worker_processes配置数字乘以worker_connections配置数字,假如worker_processes=4,worker_connections=1024,那么该Nginx服务器支持的连接数就是4 X 1024 = 4096个。
- http块是Nginx服务器配置中的重要组成部分,反向代理,负载均衡,动静分离等多数功能都在这里配置。
- server块里进行虚拟主机的配置,有3种配置,分别是基于IP、基于端口号、基于域名的虚拟主机。
- location块在整个Nginx配置文档中起着非常重要的作用,很多功能的实现需要在location块中进行配置。
2、location使用介绍
配置语法介绍
location的语法结构
location [ = | ~ | ~* | ^~ ] uri { ... }
其中,uri是待匹配的请求字符串,可以是标准uri(不含正则表达式的uri),也可以是正则uri(使用正则表达式的uri);方括号里的部分是可选项,用来表示请求字符串与uri的匹配方式。“=”,用于标准uri前,要求请求字符串与uri完全匹配,一般称之为精准匹配“^~”,用于标准uri前,一般称为前缀匹配“~*”,用于表示uri包含正则表达式,不区分大小写“~”,用于表示uri包含正则表达式,且区分大小写
配置规则介绍
- 在没有可选项的情况下,指的就是通用匹配
- Nginx服务器首先在server块的多个location中搜索是否有标准uri和请求字符串匹配,如果有多个可以匹配,就记录匹配度最高的一个。
- 然后,服务器再用location块中的正则uri和请求字符串匹配,当第一个正则uri匹配成功,结束搜索,并使用这个location块处理该请求;
- 如果正则匹配全部失败,就使用刚才记录的匹配度最高的location块处理该请求。
使用 “=” 修饰uri,指的是精准匹配
1.如果匹配成功,就停止继续向下搜索,立即用匹配到的location块处理该请求。
使用 “^~” 修饰uri,指前缀匹配
1.要求Nginx服务器找到标识uri和请求字符串匹配度最高的location后,立即使用此location块处理该请求,而不再使用正则uri匹配。
使用 “~*”或者 “~” 修饰uri,指正则匹配
1.正则匹配会覆盖通用匹配。
规则的优先级
从上面的配置规则可以看出,精准匹配的优先级最高,前缀匹配的优先级第二,正则匹配第三。
nginx.conf文件简化版配置示例
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name localhost;
location / {
root html;
index index.html index.htm;
}
# redirect server error pages to the static page /50x.html
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
2
Nginx的实例演示环境介绍
1、实例演示环境介绍(Centos+Nginx+Tomcat)
操作系统是CentOS 7.5
Nginx服务器版本是nginx-1.14.1,IP=192.168.1.8
Tomcat服务器版本是apache-tomcat-8.5.35,两台Tomcat服务器
Tomcat1的IP=192.168.1.9
Tomcat2的IP=192.168.1.10
2、架构图如下:
至此Nginx的基础介绍完毕,后续将进行实例演示。