google关键词‘nginx’,随随便便都能找出下面这段解释:nginx是一款轻量级的网页服务器、反向代理服务器。它具有占有内存少,稳定性高等优势。它最常的用途是提供反向代理服务。总之就是好牛逼的感觉。
刚开始接触nginx不太清楚里面的配置的意思,所以结合自己的使用总结出下面这篇笔记。
介绍
先上图,了解一下nginx各方面的信息(请原谅我无耻的盗了一张图):
具体nginx能干啥,巴拉巴拉。。。。。(此处省略15000字)
安装
下载地址,有你想要的各种版本:
http://nginx.org/en/download.html
运行
windows用户:
1 | //解压文件后进去nginx目录 |
linux用户:
1 | //解压文件后进去nginx目录 |
location配置规则
nginx通过匹配location的规则来决定请求该如何处理,因此需要先熟悉location的配置规则。
1 | location / { |
语法规则: location [=|~|~*|^~] /url/ { … }
= 开头表示精确匹配
^~ 开头表示url以某个常规字符串开头。nginx不对url做编码,因此请求为/xxx/20%/aa,可以被规则^~ /xxx/ /aa匹配到(注意空格)。
~ 开头表示区分大小写的正则匹配
~* 开头表示不区分大小写的正则匹配
!~和!~*分别为区分大小写不匹配及不区分大小写不匹配 的正则
/ 通用匹配,任何请求都会匹配到。
具体内容看后面的Demo
全局变量
ng提供了下面这些全局变量,可以在if判断或者请求转发的时候用到
$args: #这个变量等于请求行中的参数,同$query_string
$content_length: 请求头中的Content-length字段。
$content_type: 请求头中的Content-Type字段。
$document_root: 当前请求在root指令中指定的值。
$host: 请求主机头字段,否则为服务器名称。
$http_user_agent: 客户端agent信息
$http_cookie: 客户端cookie信息
$limit_rate: 这个变量可以限制连接速率。
$request_method: 客户端请求的动作,通常为GET或POST。
$remote_addr: 客户端的IP地址。
$remote_port: 客户端的端口。
$remote_user: 已经经过Auth Basic Module验证的用户名。
$request_filename: 当前请求的文件路径,由root或alias指令与URI请求生成。
$scheme: HTTP方法(如http,https)。
$server_protocol: 请求使用的协议,通常是HTTP/1.0或HTTP/1.1。
$server_addr: 服务器地址,在完成一次系统调用后可以确定这个值。
$server_name: 服务器名称。
$server_port: 请求到达服务器的端口号。
$request_uri : 包含请求参数的原始URI,不包含主机名,如:”/foo/bar.php?arg=baz”。
$uri: 不带请求参数的当前URI,$uri不包含主机名,如”/foo/bar.html”。
$document_uri: 与$uri相同。
简单示例-转发
1 | #配置服务器列表 常用指令 |
配置nginx虚拟主机
居然差点忘了说一说虚拟主机的配置方法了。。。。
nginx虚拟主机允许我们在同一台服务器上运行多个网站,可以给不同的域名绑定不同的目录,访问这个域名的时候,会打开对应目录里面的东西
找到nginx的配置文件
nginx.conf
文件里面有一段
server {...}
,我们可以把他替换成include vhost/*.conf
,导出vhost目录下面以conf结尾的配置文件;创建vhost文件,然后添加多个*.conf的配置文件。
配置文件内容,其他配置一样,不同的是server部分:
1 | server { |
写在最后
有新发现后在更新
完了。。。