Ningx - Note

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

可执行文件配置Mac,全局用户

/etc/.bashrc

export PATH=<>:$PATH

 

 

修改端口:/usr/local/etc/nginx/nginx.conf

http {
    server {
        listen       <your port num>;
        server_name  localhost;  

        #charset koi8-r;
        .....
        }
    }

本机地址:localhost:<your port num> (默认8080)

 

 

3. Location匹配规则

  1. 语法规则

location [ = | ~ | ~* | ^~ ] uri { ... }  可选修饰符 + uri
location @name { ... } @用来定义一个命名location。主要用于内部重定向,不能用来处理正常的请求
    • = 表示精确匹配。只有请求的url路径与后面的字符串完全相等时,才会命中。
    • ~ 表示该规则是使用正则定义的,区分大小写
    • ~* 表示该规则是使用正则定义的,不区分大小写
    • ^~ 表示如果该符号后面的字符是最佳匹配,采用该规则,不再进行后续的查找。

2. 匹配过程

具体的匹配过程如下:

1) 先检查使用前缀字符定义的location,选择最长匹配的项并记录下来。

2)如果找到了精确匹配的location,也就是使用了=修饰符的location,结束查找,使用它的配置,没找到时进入3)。

3)然后按顺序查找使用正则定义的location,如果匹配则停止查找,使用它定义的配置,没找到时进入4)。

4)如果没有匹配的正则location,则使用前面记录的最长匹配前缀字符location。

基于以上的匹配过程,我们可以得到以下两点启示:

    1. 使用正则定义的location在配置文件中出现的顺序很重要。因为找到第一个匹配的正则后,查找就停止了,后面定义的正则就是再匹配也没有机会了。
    2. 使用精确匹配可以提高查找的速度。例如经常请求/的话,可以使用=来定义location。

3. 尾部 / 重定向

location中是否带/不影响

url中,没有/时,先匹配是否有<path name>的文件,后寻找<path name>文件夹

 

4. 总结

location的配置有两种形式,前缀字符和正则。查找匹配的时候,先查找前缀字符,选择最长匹配项,再查找正则。正则的优先级高于前缀字符。

正则的查找是按照在配置文件中的顺序进行的。因此正则的顺序很重要,建议越精细的放的越靠前。

使用=精准匹配可以加快查找的顺序,如果根域名经常被访问的话建议使用=

 

Example:

匹配规则

location = / {
    [ configuration A ]   精准匹配 / 
}

location / {
    [ configuration B ]   后续没有合适的正则匹配时,匹配 /<your uri>
}

location /user/ {
    [ configuration C ]
}

location ^~ /images/ {
    [ configuration D ]
}

location ~* \.(gif|jpg|jpeg)$ {
    [ configuration E ]
}

@

location / {
    try_files $uri $uri/ @custom
}
location @custom {
    # ...do something
}

 

posted @ 2019-09-18 16:10  森淼clover  阅读(147)  评论(0编辑  收藏  举报