Note..
Mac
1. 安装
Mac:
brew install nginx
2. 配置
主页的文件在/usr/local/var/www 文件夹下,首页 /usr/local/var/www/index.html
对应的配置文件地址在/usr/local/etc/nginx/nginx.conf
nginx //运行
nginx -s reload //重启
Linux环境
1. 安装
安装前需要安装gcc
yum install gcc cc
随便找一个版本的安装包
cd wget http://nginx.org/download/nginx-1.0.5.tar.gz tar xvfz nginx-1.0.5.tar.gz cd nginx-1.0.5
安装
./configure
make
make install
启动
cd /usr/local/nginx/sbin
./nginx
运行后可查询到PID
# ps -ef | grep -i nginx
root 18596 13:16 nginx: master process ./nginx nobody 18597 13:16 nginx: worker process
停止
cd /usr/local/nginx/sbin
./nginx -s stop
修改端口:/usr/local/etc/nginx/nginx.conf
http {
server {
listen ;
server_name localhost;
#charset koi8-r;
.....
}
}
本机地址:localhost:
3. Location匹配规则
1. 语法规则
location [ = | ~ | ~* | ^~ ] uri { ... } 可选修饰符 + uri
location @name { ... } @用来定义一个命名location。主要用于内部重定向,不能用来处理正常的请求
-
=
表示精确匹配。只有请求的url路径与后面的字符串完全相等时,才会命中。~
表示该规则是使用正则定义的,区分大小写。~*
表示该规则是使用正则定义的,不区分大小写。^~
表示如果该符号后面的字符是最佳匹配,采用该规则,不再进行后续的查找。
2. 匹配过程
具体的匹配过程如下:
1) 先检查使用前缀字符定义的location,选择最长匹配的项并记录下来。
2)如果找到了精确匹配的location,也就是使用了=
修饰符的location,结束查找,使用它的配置,没找到时进入3)。
3)然后按顺序查找使用正则定义的location,如果匹配则停止查找,使用它定义的配置,没找到时进入4)。
4)如果没有匹配的正则location,则使用前面记录的最长匹配前缀字符location。
基于以上的匹配过程,我们可以得到以下两点启示:
-
- 使用正则定义的location在配置文件中出现的顺序很重要。因为找到第一个匹配的正则后,查找就停止了,后面定义的正则就是再匹配也没有机会了。
- 使用精确匹配可以提高查找的速度。例如经常请求
/
的话,可以使用=
来定义location。
3. 尾部 / 重定向
location中是否带/不影响
url中,没有/时,先匹配是否有
4. 总结
location的配置有两种形式,前缀字符和正则。查找匹配的时候,先查找前缀字符,选择最长匹配项,再查找正则。正则的优先级高于前缀字符。
正则的查找是按照在配置文件中的顺序进行的。因此正则的顺序很重要,建议越精细的放的越靠前。
使用=
精准匹配可以加快查找的顺序,如果根域名经常被访问的话建议使用=
。
Example:
匹配规则
location = / { [ configuration A ] 精准匹配 / } location / { [ configuration B ] 后续没有合适的正则匹配时,匹配 /} location /user/ { [ configuration C ] } location ^~ /images/ { [ configuration D ] } location ~* \.(gif|jpg|jpeg)$ { [ configuration E ] }
@
location / { try_files $uri $uri/ @custom } location @custom { # ...do something }