Nginx代理配置详解
- Nginx.conf配置文件
- 配置文件结构
… #全局块
events { #events块
…
}
http #http块
{
… #http全局块
server #server块
{
… #server全局块
location [PATTERN] #location块
{
…
}
location [PATTERN]
{
…
}
}
server
{
…
}
… #http全局块
}- 全局块
配置影响nginx全局的指令。一般有运行nginx服务器的用户组,nginx进程pid存放路径,日志存放路径,配置文件引入,允许生成worker process数等 - events块
配置影响nginx服务器或与用户的网络连接。有每个进程的最大连接数,选取哪种事件驱动模型处理连接请求,是否允许同时接受多个网路连接,开启多个网络连接序列化等 - http块
可以嵌套多个server,配置代理,缓存,日志定义等绝大多数功能和第三方模块的配置。如文件引入,mime-type定义,日志自定义,是否使用sendfile传输文件,连接超时时间,单连接请求数等 - server块
配置虚拟主机的相关参数,一个http中可以有多个server。 - location块
配置请求的路由,以及各种页面的处理情况。-
location 语法规则
location [=||*|^~] /uri/ {
·····
}= 开头表示精确匹配
^~ 开头表示uri以某个常规字符串开头,理解为匹配 url路径即可。nginx不对url做编码,因此请求为/static/20%/aa,可以被规则^~ /static/ /aa匹配到(注意是空格)
~ 开头表示区分大小写的正则匹配
~* 开头表示不区分大小写的正则匹配
!~ 区分大小写不匹配的正则
!~* 不区分大小写不匹配的正则
/ 通用匹配,任何请求都会匹配到注意匹配顺序,上面列的已经按优先级列出
-
配置规范
直接匹配网站根,通过域名访问网站首页比较频繁,使用这个会加速处理
这里是直接转发给后端应用服务器了,也可以是一个静态首页
location = / {
proxy_pass http://localhost:8080/index
}静态文件规则
location ^~ /static/ {
root /webroot/static/;
}
location ~* .(gif|jpg|jpeg|png|css|js|ico)$ {
root /webroot/res/;
}通用规则,用来转发动态请求到后端应用服务器
location / {
proxy_pass http://localhost:8080/
}
-
- 全局块
- 配置文件结构
- Nginx配置项
$args :请求参数
$content_length :等于请求行的“Content_Length”的值
$content_type :内容编码类型,等同与请求头部的”Content_Type”的值
$host :与请求头部中“Host”行指定的值或是request到达的server的名字(没有Host行)一样
$limit_rate :允许限制的连接速率
$status : 用来记录请求状态;成功是200
$http_referer :用来记录从那个页面链接访问过来的
$http_user_agent :记录客户端浏览器的相关信息
$http_cookie :获取cookie的信息
$time_local : 用来记录访问时间与时区;
$request_body_file :临时文件名
$request_method:请求行为类型,GET/POST/PUT/DELETE等
$remote_addr :用以记录客户端的ip地址
$http_x_forwarded_for :记录客户端的ip地址
$remote_port :记录客户端的端口
$remote_user :用来记录客户端用户名称
$request : 用来记录请求的url与http协议
$request_filename :当前请求的文件的路径名,由root或alias和URI request组合而成
$request_url:含有参数的完整的初始URL
$query_string : 与args一样
$server_protocol :请求协议,使用“HTTP/或“HTTPS/
$server_addr : 请求到达的server的ip,一般获得此变量的值的目的是进行系统调用
$server_name :请求到达的服务器名
$server_port:请求到达的服务器的端口号
$url:等同于当前request中的URL