1.多个server的优先级
以每个server区块都监听80端口为例,www.pm.com对应ip地址,匹配顺序为:
①server_name和www.pm.com完全相同的区块。
②server_name为 *.pm.com 的区块。(通配符在前)
③server_name为 pm.* 的区块。(通配符在后)
④server_name使用正则表达式并能匹配上www.pm.com的区块。
⑤如果都没有匹配到,将选择 listen 80 default_server;的区块。
⑥如果没有第5项,则选择第一个配置文件的第一个server区块。
访问域名www.pm.com就是优先选择上面的server。
如果此时以ip访问,在请求头中的host字段的值就是192.168.1.7,无法匹配到server_name,就会按照规则匹配到下面的那个server。
2.禁止ip访问
禁止ip访问可以防止别人恶意将域名解析到自己的ip上。
两种形式:
注:第一种方法必须使用 default_server,如果别的地方要用default_server,可以用第二种方法的形式。
3.多用include(写好注释)
一台服务器配置多个server网站,会导致主配置文件nginx.conf非常臃肿,可读性变差,则可以多使用include方法,简化主配置文件,便于运维人员维护。
4.使用alias保护网站真实目录结构
当我们以http://www.pm.com/image/logo.png访问该图片时,按常规来说,访问者就知道了该图片的路径位置
location /image {
root /pm_code;
}
对应的路径为 /pm_code/image/
当使用alias时:
location /image {
alias /pm_code;
}
此时图片真实的位置是在/pm_code下,/image是一个虚拟目录,alias后面是绝对目录路径。
5.error_page的配置
模拟404报错
当输入一个不存在的网址时,如http://www.pm.com/jfkdjfk 会跳转到/pm_code/www/404.jpg
模拟502报错
在浏览器中输入www.pm.com,链接超时,会显示/pm_code/www/500.jpg
注意:两者之间的格式不同。500必须再写一个location。
6.try_files配置
一个简单的例子:
当在浏览器输入www.pm.com时,会先去找400.html,如果没有再去找index.html