nginx相关

配置文件

可以使用include命令简化配置,include命令很好理解,就是把另一个文件的内容包含在本文件中
例如:a.conf中有 include b.conf,就表示a.conf中包含了b.conf的内容
参考

https://akuma.github.io/2013/11/02/%E4%BD%BF%E7%94%A8-include-%E6%8C%87%E4%BB%A4%E7%AE%80%E5%8C%96-Nginx-%E9%85%8D%E7%BD%AE/

log_format

定义nginx的日志格式的部分,主要包括这些参数

参数	说明	示例
$remote_addr:客户端ip地址
$remote_user:客户端用户名称(一般好像是"-")
$time_local:访问时间和时区(可以简单理解为客户端请求nginx的时间)
$request:请求的URI和HTTP协议 示例:“GET /article-10000.html HTTP/1.1”
$http_host:请求地址,即浏览器中你输入的地址(IP或域名)	 示例:www.ha97.com;198.98.120.87
$status:HTTP请求状态(应该是响应状态?)	示例:200
$upstream_status	upstream状态	200
$body_bytes_sent	发送给客户端文件内容大小	1547
$http_referer	url跳转来源	https://www.google.com/
$http_user_agent	用户终端浏览器等信息	“Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; SV1; GTB7.0; .NET4.0C;
$ssl_protocol	SSL协议版本	TLSv1
$ssl_cipher	交换数据中的算法	RC4-SHA
$upstream_addr	后台upstream的地址,即真正提供服务的主机地址	10.36.10.80:80
$request_time:可以简单理解为整个请求的时间
从客户端发出请求---->nginx代理将请求发送到服务器---->服务器响应给nginx--->nginx响应给客户端
$upstream_response_time:可以理解为nginx跟服务端交互的时间
nginx代理将请求发送到服务器---->服务器响应给nginx

server

一个server表示一个虚拟主机。一个nginx可以在配置文件nginx.conf配置多个server;简单理解,一个nginx可以通过配置的多个server来实现监听多个端口

listen 80;  虚拟主机监听的端口80
server_name test.hadoop.com;  虚拟主机的名称
access_log /***/***/**.log;  access.log日志文件的存放路径
error_log /***/***/**.log; error.log日志文件的存放路径
root /***/***/;  静态资源(编译之后的html、css、js文件的根路径)路径,index.html、static、WEB-INF的上级路径
index * 指定部署在nginx中的网站的首页,示例:index index.html,表示指定的网站首页就是index.html(其实默认的也是这个)

server中的$host代表什么意思?
nginx会根据优先级去取:1、请求行中的host;2、请求头中的Host头部;3、与一条请求匹配的server name
前两条可以简单理解为访问的域名,例如 https:www.baidu.com,那么在nginx的配置文件nginx.conf中的
server模块,使用$host的时候,取到的值就是www.baidu.com。第三条:可以理解为,如果请求中没有带域名(暂时还未发现有这种请求),nginx.conf中server_name配置的值就会作为$host的值,如果配置的有多个,就会取第一个。
注意:
	server模块的server_name不是必须配置的;
	server_name的值跟请求中的host没有任何关系,他们不相同也可以正常访问
	例如:server_name配置为test.hadoop.com,假设该nginx部署的机器ip为11.22.33.44,则该虚拟主机(test.hadoop.com)监听的就是11.22.33.44:80,假如我在自己的机器中host中配置  11.22.33.44 aaa.test.com,那么我使用自己的浏览器访问 aaa.test.com也可以正常访问到test.hadoop.com(11.22.33.44)
$uri:表示浏览器访问的地址(除去域名之后的内容),示例,浏览器中访问的地址http://www.test.com/index.html,那么在nginx中的配置文件中使用$uri获取到的值就是 index.html;如果浏览器中访问的地址http://www.test.com/abc/test.html,那么在nginx中的配置文件中使用$uri获取到的值就是abc/test.html

server中的location

匹配http请求的前缀(除去域名)

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

示例:
匹配根路径,例如访问https://www.baidu.com
location / {
   proxy_pass http://example_upstream/;  需要跳转到的目的地址(在upstream中配置)
   proxy_set_header Host: test.example.com;  设置请求头的字段内容
   proxy_set_head X-real-ip $remote_addr;  设置请求头的字段内容
   proxy_next_upstream error timeout http_500;  表示请求(https://www.baidu.com/example)出现错
   误、超时、500状态码的时候,也会跳转到proxy_pass指定的位置;当前,指定的参数还可以包含其他
   的,不光只有这些
   try_files;0.7以后的版本中加入的try_files指令,配合命名location,可以部分替代原本常用的rewrite配置方式,提高解析效率
}
 try_files:去尝试到网站目录读取用户访问的文件,如果第一个变量存在,就直接返回;
不存在继续读取第二个变量,如果存在,直接返回;不存在直接跳转到第三个参数上。
示例:loation / {
...
 try_files $uri $uri/ /index.html
}
当浏览器访问的url为 https://www.baidu.com/时,会匹配到“loation /”,此时$uri为/,当try_files进行解析时,会先看nginx静态资源中的文件或者文件夹(见本文server模块,root的配置)是“/”的(匹配到$uri),如果没有,在看nginx静态资源中的文件或者文件夹是是“//”的(匹配到$uri/),如果还没有,则匹配nginx静态资源中的“/index.html”,如果有/index.html则返回该文件内容给浏览器,如果没有,则匹配失败,一般会跳转到nginx的错误页

匹配具体路径,例如访问https://www.baidu.com/example
location /example/ {
   proxy_pass http://hadoop/;  需要跳转到的目的地址(在upstream中配置)
   proxy_set_header Host: test.example.com;  设置请求头的字段内容
   proxy_set_head X-real-ip $remote_addr;  设置请求头的字段内容
   proxy_next_upstream error timeout http_500;  表示请求(https://www.baidu.com/example)出现错
   误、超时、500状态码的时候,也会跳转到proxy_pass指定的位置;当前,指定的参数还可以包含其他
   的,不光只有这些
}

注意:post, lock, patch 这种会对服务器造成不幂等的请求方式,默认是不进行重试的(即使在
proxy_next_upstream配置了错误重试),如果一定要进行重试,则要加上这个配置non_idemponent。
原来的就变成了proxy_next_upstream error timeout http_500 non_idemponent;

upstream

location中的proxy_pass指定的内容

upstream example_upstream {
    server 127.0.0.1:6666  weight=10 max_fails=2 fail_timeout=30s ;
}
upstream hadoop {
    server 123.45.67.1:6666  weight=10 max_fails=2 fail_timeout=30s ;
}

常用命令

https://www.cnblogs.com/54chensongxia/p/12938469.html

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值