目录
nginx.conf文件介绍
一.文件共享功能
1.清空html目录下文件并新建你要共享的文件
2.修改nginx.conf文件,开启autoindex功能
3.测试
二.状态模块
1.修改nginx.conf文件
2.测试
(1)使用刚才定义的IP/nginx_status进行访问
(2)status参数介绍
三.location模块的配置
1.location的语法
2.location的介绍
(1)uri是待匹配的请求字符串,可以不含正则(标准uri)也可以含正则(正则uri)
(2)括号内的标识符号是确定uri匹配方式的
3.uri匹配的模式和优先级,从高到低
rewrite
一.定义
二.作用
1.调整用户浏览的url,模板更规范
2.提升搜索引擎网站给予用户的体验,可以将动态的url伪装成静态地址提供服务
3.在网站更换新域名后,可以通过旧域名访问到新域名
4.便于根据特殊变量1、客户信息进行url调整
三.区分地址重写和转发
1.地址重写和地址转发
2.地址转发时只会有一次网络访问请求,重写一般会有两次
3.地址转发发生在同一站点的不同项目之间,地址重写没有这个限制
4.地址重写的页面的路径需要完整路径,转发则不需要
5.地址转发可以将客户请求的数据属性传递到新的界面,而地址重写不可以,仅仅是将页面定向到服务器选定的地址
6.地址重写的速度比转发慢
四.rewrite的语法规则
1.格式
2.几个flag标记符号介绍
五.例子
1.访问不存在的网页时定向到某个界面
(1)使用if+rewrite
(2)使用try_files
2.为某个目录定义别名,用户访问的路径其实并不存在,而是将其转发到另外一个页面
(1)创建bbb目录存放index.html文件
(2)编辑nginx.conf文件
3.实现域名跳转
访问80端口域名跳转到195主机的域名
nginx.conf文件介绍
一.文件共享功能
适用情况,在没有美首页文件,即你没有任何html文件时使用
1.清空html目录下文件并新建你要共享的文件
[root@localhost html]# ll
total 0
[root@localhost html]# touch {a..d}.rpm
[root@localhost html]# ll
total 0
-rw-r--r-- 1 root root 0 Aug 10 14:57 a.rpm
-rw-r--r-- 1 root root 0 Aug 10 14:57 b.rpm
-rw-r--r-- 1 root root 0 Aug 10 14:57 c.rpm
-rw-r--r-- 1 root root 0 Aug 10 14:57 d.rpm
[root@localhost html]# pwd
/usr/local/src/nginx-1.22.0/html
2.修改nginx.conf文件,开启autoindex功能
在要实现此功能的server区块内的location区块开启autoindex,html工作目录要和实际目录一致
[root@localhost conf]# pwd
/usr/local/src/nginx-1.22.0/conf
[root@localhost conf]# vim nginx.conf
server {
listen 192.168.2.190;
server_name www.aabb.com;
error_log /usr/local/src/nginx-1.22.0/logs/error.log;
access_log /usr/local/src/nginx-1.22.0/logs/access.log;
location / {
root /usr/local/src/nginx-1.22.0/html/;
autoindex on; #添加这行
index index.html index.htm;
}
}
3.测试
二.状态模块
可以查看nginx服务的状态
1.修改nginx.conf文件
[root@localhost conf]# vim nginx.conf
server {
listen 192.168.2.190;
server_name www.aabb.com;
error_log /usr/local/src/nginx-1.22.0/logs/error.log;
access_log /usr/local/src/nginx-1.22.0/logs/access.log;
location / {
root /usr/local/src/nginx-1.22.0/html/;
autoindex on;
index index.html index.htm;
}
location /nginx_status{ ¥新添加一个location区块,新增以下内容
stub_status on;
access_log off;
}
}
[root@localhost conf]# systemctl restart nginx
2.测试
(1)使用刚才定义的IP/nginx_status进行访问
(2)status参数介绍
Active connections 表示当前的活动客户端连接数量
accepts表示接受客户端连接的总数
handled表示处理的连接总数
requests表示客户端请求的总数
Reading表示nginx正在读请求头的当前连接数
Writing 表示nginx正在将响应写回客户端的当前连接数
Waiting表示当前空闲客户端连接数等待一个请求
三.location模块的配置
1.location的语法
location [=|~|~*|^~|=/] uri {
......
}
2.location的介绍
根据用户请求的uri来来执行不同的location
(1)uri是待匹配的请求字符串,可以不含正则(标准uri)也可以含正则(正则uri)
(2)括号内的标识符号是确定uri匹配方式的
- 没有这些选项时,server先试用标准uri进行匹配,记录匹配度最高者。再用正则uri进行匹配,当第一个正则uri匹配成功时停止,并使用这个location区块,这锅这里面的正则uri都匹配失败了,就是用上面的记录的匹配度最高的标准uri所在location
- “=”,要求请求的字符串与uri严格匹配,一经匹配成功就停止匹配并处理当前location
- “~”,表示uri包含有正则表达式,区分大小写
- “~*”,表示uri包含有正则表达式,不区分大小写,含有正则表达式时就必须使用这两个中的一个
- “^~”,表示要求nginx服务器找到uri和请求字符串最高匹配度的location后立即处理这个location,不再匹配正则uri
- “!~”,,取反
3.uri匹配的模式和优先级,从高到低
location = / {} | 精确匹配/,根据给定的path做精准匹配 |
location ^~ /image/{ | 字符串常规匹配,不做正则检查 |
location ~* \.(gif\|jpg\|jpeg)$ { | 正则匹配 |
location /documents/ { | 字符串常规匹配,做正则检查,有正则就会先匹配正则 |
location / { | 其他所有的location都未被匹配到后默认匹配这个location |
rewrite
一.定义
web服务器中的必备功能,用来实现地址的重写(不是转发),可以让用户在我们网站变动的时候仍然能够通过原来的书签访问到变动后的内容。
二.作用
1.调整用户浏览的url,模板更规范
2.提升搜索引擎网站给予用户的体验,可以将动态的url伪装成静态地址提供服务
3.在网站更换新域名后,可以通过旧域名访问到新域名
4.便于根据特殊变量1、客户信息进行url调整
三.区分地址重写和转发
1.地址重写和地址转发
地址重写是地址标准化的过程,即使服务器接受了来自用户输入的不同的域名,但服务器再此之中选择确定的一个,那么客户端浏览器中的地址会改变为服务器选定的地址;而地址转发是数据传输分别到达不同的路由器服务器设备,是一个域名指向一个站点的过程,在地址转发的过程中,浏览器中的地址是不变的。
2.地址转发时只会有一次网络访问请求,重写一般会有两次
3.地址转发发生在同一站点的不同项目之间,地址重写没有这个限制
4.地址重写的页面的路径需要完整路径,转发则不需要
5.地址转发可以将客户请求的数据属性传递到新的界面,而地址重写不可以,仅仅是将页面定向到服务器选定的地址
6.地址重写的速度比转发慢
四.rewrite的语法规则
1.格式
可以应用在server、location、if等
rewrite regex replacement [flag];
#表示根据regex正则表达式匹配成功后跳转到replacement
2.几个flag标记符号介绍
last——本条规则匹配完成后, 继续向下匹配新其他uri规则
break——本条规则匹配完成即终止, 不再匹配后面的任何规则
redirect——返回 302 临时重定向, 浏览器地址栏会显示跳转后的url地址
permanent——返回 301 永久重定向, 浏览器地址栏会显示跳转后的url地址
五.例子
1.访问不存在的网页时定向到某个界面
(1)使用if+rewrite
server {
listen 80;
server_name www.aabb.com;
error_log /usr/local/src/nginx-1.22.0/logs/error.log;
access_log /usr/local/src/nginx-1.22.0/logs/access.log;
location / {
root /usr/local/src/nginx-1.22.0/html/ip; #这个目录里不要存在index.html文件
index index.html index.htm;
if (!-f $request_filename) {
rewrite /. /err.html permanent; #这个err.html要放在上面那个html/ip目录里
}
}
(2)使用try_files
server {
listen 80;
server_name www.aabb.com;
root /usr/local/src/nginx-1.22.0/html/ip;
index index.html index.htm;
location / {
try_files $uri $uri/ =404;
}
location = /err.html {
root /usr/local/src/nginx-1.22.0/html/ip;
}
error_page 404 /err.html;
}
2.为某个目录定义别名,用户访问的路径其实并不存在,而是将其转发到另外一个页面
(1)创建bbb目录存放index.html文件
[root@localhost ip]# pwd
/usr/local/src/nginx-1.22.0/html/ip
[root@localhost ip]# ll
total 4
drwxr-xr-x 2 root root 24 Aug 11 12:54 bbb
-rwxrwxrwx 1 root root 6 Aug 11 11:39 err.html
[root@localhost ip]# cat bbb/index.html
bbb
(2)编辑nginx.conf文件
server {
listen 80;
server_name www.aabb.com;
error_log /usr/local/src/nginx-1.22.0/logs/error.log;
access_log /usr/local/src/nginx-1.22.0/logs/access.log;
location / {
root /usr/local/src/nginx-1.22.0/html/ip;
index index.html index.htm;
rewrite ^/aaa/(.*) /bbb/$1 last; #aaa目录实际上不存在,在访问aaa时跳转访问bbb目录的内容
}
}
3.实现域名跳转
访问80端口域名跳转到195主机的域名
server {
listen 80;
server_name www.aabb.com;
rewrite ^/.* http://www.llss.com/$1 last;
error_log /usr/local/src/nginx-1.22.0/logs/error.log;
access_log /usr/local/src/nginx-1.22.0/logs/access.log;
location / {
root /usr/local/src/nginx-1.22.0/html/ip;
index index.html index.htm;
}
}
server {
listen 192.168.2.195;
server_name www.llss.com;
location / {
root /usr/local/src/nginx-1.22.0/html/ip;
index index1.html index.htm;
}
}