- nginx虚拟主机配置(利用server模块)
基于域名的虚拟主机配置(企业级使用)
基于端口的虚拟主机配置
说明:结合OSI7层模型,熟悉虚拟主机访问原理
基于ip地址的虚拟主机配置
说明:只要nginx配置文件中涉及ip地址信息修改,都要重新启动 而不是平滑重启
- nginx企业扩展应用
虚拟主信息规范配置
将多个server区块信息,单独放置在一个文件夹中
在nginx主配置文件中,利用include参数调用虚拟主机配置文件
配置了虚拟主机别名功能
nginx状态模块功能配置
stub_status on;
作用说明:主要是为了监控访问web服务情况
- nginx相关日志信息
日志配置
nginx的访问日志配置
说明:日志切割方法(利用脚本结合定时任务进行切割 利用logrotate服务软件进行日志切割)
重要:nginx必须掌握的基础服务 MySQL数据库 shell脚本 zabbix监控 缓存服务
Nginx服务location区块说明
搭建测试环境
搭建好一台nginx的web服务器。配置好内网卡地址与外网卡地址
web服务的网站域名为www.wangke.com,站点目录为html/www
要求内网用户可以访问网站http://www.wangke.com/AV.jpg资源信息(福利)
要求外网用户禁止访问网站www.wangke.com/AV.jpg资源信息(不让外网看福利)
- 利用相应nginx技术手段,将访问信息锁定在AV.jpg上
location /AV.jpg {
allow 172.16.1.0/24;
deny all;
}
deny all :拒绝所有,全部拒绝。以上信息代表除了内网段172.16.1.0/24,其他全部拒绝访问/AV资源
- 利用相应nginx技术手段,实现访问策略控制
location / {
allow 172.16.1.0/24;
deny all;
}
以上信息代表除了内网段172.16.1.0/24,其他全部拒绝访问站点目录
测试:
location区块官方说明
Syntax: location [ = | ~ | ~* | ^~ ] uri { ... }
location @name { ... }
Default: —
Context: server, location
官方参考链接:http://nginx.org/en/docs/http/ngx_http_core_module.html#location
- location区块其实相当于 == shell if语句
“~” 用于区分大小写(大小写敏感)的匹配;
“~*” 用于不区分大小写的匹配。 grep -i find -iname
“=” 表示精确匹配
”^~“ 让匹配的优先级更高,优先匹配
作用是在进行常规的字符串匹配检查之后,不做正则表达式的检查,
即如果最明确的那个字符串匹配的location配置中有此前缀,那么不做正则表达式的检查
还可以用逻辑操作符“!”对上面的匹配取反,即“!~”和“!~*”。
- 通过实践配置信息,了解location匹配符号优先级
server {
listen 80;
server_name www.etiantian.org etiantian.org;
root html/www;
location / {
return 401;
}
location = / {
return 402;
}
location /documents/ {
return 403;
}
location ^~ /images/ {
return 404;
}
location ~* .(gif|jpg|jpeg)$ {
return 500;
}
}
利用curl命令访问测试:匹配优先级为
= 精确匹配,所以匹配优先级最高
^~ 第二优先级/documents/ ~* ~ 第三优先
/ 默认匹配 优先级最低
例外:取出 报错号
curl -s -I www.etiantian.org/oldboy.html|awk 'NR==1{print $2}'
curl -s -o /dev/null -I -w "%{http_code}" http://www.etiantian.org
curl -s -I www.etiantian.org/oldboy.html -w '%{http_code}' -o /dev/null
说明:通过以上命令可以实现对网站页面的监控
nginx的rewirte作用说明
nginx 的rewite重写模块说明:
http://www.wangke.com/day1&study
http://www.wangke.com/day1-study
- rewrite模块两个功能
1. 实现网站地址信息跳转
2. 实现伪静态
rewrite语法格式:rewrite regex replacement [flag] == s#regex#replacement#g
rewrite应用标签:server、location、if
官方参考链接:http://nginx.org/en/docs/http/ngx_http_rewrite_module.html#rewrite
练习1:
server {
listen 80;
server_name www.etiantian.org;
rewrite ^/(.*) http://www.etiantian.org/$1 permanent;
location / {
root html/www;
index index.html index.htm;
}
access_log logs/access_www.log main;
}
permanent:永久的
以上配置可能会存在问题
[root@web02 conf]# curl etiantian.org
301 Moved Permanently301 Moved Permanently
nginx/1.10.2 [root@web02 conf]# curl -L etiantian.org
curl: (47) Maximum (50) redirects followed
- 命令知识扩充:curl命令参数说明
curl -Lv
-L表示:-L/--location Follow Location: hints (H);表示追踪访问的过程,跟踪Location信息;示意信息(H)
-v表示: 显示追踪的
- 避免无限跳转的第一种方法
if ($host ~* "^etiantian.org$") {
rewrite ^/(.*) http://www.etiantian.org/$1 permanent;
}
- 避免无线跳转的第二种方法
server { <== 添加了一个server标签,在www.etiantian.org标签之上
server_name etiantian.org;
rewrite ^/(.*) http://www.etiantian.org/$1 permanent;
}
flag标记符号 说明
last 本条规则匹配完后,继续向下匹配新的location URL规律
break 本条规则匹配完即终止,不再匹配后面的任何规则
redirect 返回302临时重定向,浏览器会显示跳转后的URL地址
permanent 返回301永久重定向,浏览器会显示跳转后的URL地址
注意:这个地方的知识点最难理解,写的有点少,还望谅解。有时间我自己钻研下,对于匹配哪个location模块还是很模糊。有大神了解的可以给我留言下。实在没搞明白哪个location的匹配定位到站点目录怎么去匹配···········
本次完,谢谢大家支持——ke.ke