一. 安装
详见 这里
二. 基本命令
1. 启动: nginx
2. 重启: nginx -s reload
3. 关闭: nginx -s stop 或者 nginx -s quit
三. default_server 关键字
据我所测,有优先匹配到这里,然后才到其他的location
四. 可以在http模块里面使用include指令,将server放在其他文件配置
可以直接include一个文件,或者匹配可以了。如 /xxx/xxxx/*
五。nginx处理请求过程
1. 不允许访问不存在的server_name:
只要将server_name 设置为空字符串即可。
如
server {
listen 80;
server_name "";
return 444;
}
(这个试过好像不行,所以我还是弄一个
server {
listen 80;
server_name *.koala.com;
return 444;
}
这样吧,只允许访问特定的子域名)
六. location匹配顺序
1. = 这个是完全精准匹配,停止搜索匹配
2. ^~ 这个是最大前缀匹配,停止搜索匹配
3. ~ 大小写相关的正则表达式
4. ~* 大小写无关的正则表达式
5. 普通字符串匹配,这个时候越精准越好。比如 /images/ 比 / 优先级更高。虽然可能 / 这个location先写,但是假如访问的是 /images/666,匹配的却是 /images/ 。
6. 优先级: 1最高,然后是2,其余的正则表达式其次,普通字符串优先级最低(越模糊的越低)
七。server_name 的优先级
1. 精准匹配下,按顺序。(如 m.koala.com 这类的名字 )
2. 假如碰到 *.koala.com 这类全匹配,则首先会匹配具体的再配模糊的。(
server_name *.koala.com
server_name m.koala.com
上面两个,虽然前者写在前面,但是还是会先精准匹配后者。
)
八。 server_name 的匹配规则
按照以下顺序来:
1. 确切的名字,如 312.koala.com
2. 以*开始的通配符名字, 如 *.koala.com
3. 以*结尾的通配符名字, 如 312.*
4. 第一个匹配正则表达式的名字(按照配置的顺序来)
待续。。。