实验环境:centos7.6,2G内存,50G硬盘大小,虚拟机ip:172.16.1.7,172.16.1.8,172.16.1.9
nginx模块
如何查找nginx模块功能
1.打开nginx官网
http://nginx.org/
2.找到右下角的documentation
3.ctrl+f输入要查找的模块就行
nginx访问模块:ngx_http_access_module
目的:禁止外网访问,允许内网访问,我这里10.0.0.0是外网,172.16.1.0是内网
1.举例配置:
location / {
deny 192.168.1.1;
allow 192.168.1.0/24;
allow 10.1.1.0/16;
allow 2001:0db8::/32;
deny all;
}
2.指令用法:
Syntax: deny address | CIDR | unix: | all;
Default: —
Context: http, server, location, limit_except
3.配置
1)写配置文件
vim www.conf
server{
listen 80;
server_name www.zhangsb.com;
location /{
root /html/www/;
index zsb.html;
}
location /demo{
deny 10.0.0.0/24;
allow 172.16.1.0/24;
root /html/www;
index zsb.html;
}
}
nginx -t
systemctl reload nginx
ps: location外面的信息, 全局配置信息
location里面的信息, 局部配置信息
2)创建目录和文件
mkdir /html/www/demo
cp /html/www/zsb.html ./demo/zsb.html
3)修改hosts文件
4)测试
这里的域名解析的ip为外网地址10.0.0.0,当用它来访问时,出现了403的错误,说明进行访问成功
当IP地址改回内网地址时,可以看到是访问成功
nginx认证模块:ngx_http_auth_basic_module
1.举例配置
location / {
auth_basic "closed site"; --- 开启认证功能
auth_basic_user_file conf/htpasswd; --- 加载用户密码文件
}
2.指令用法
Syntax: auth_basic string | off;
Default:
auth_basic off;
Context: http, server, location, limit_except
3.配置
1)编写配置文件
vim www.conf
server{
listen 80;
server_name www.zhangsb.com;
location /{
root /html/www/;
index zsb.html;
auth_basic "zhangsb-test";
auth_basic_user_file password/htpassword;
}
}
nginx -t
systemctl reload nginx
2)创建密码文件(文件中密码信息必须是密文的)
安装htpasswd:
yum -y install httpd-tools
htpasswd命令参数说明:
-c Create a new file. *****
创建一个密码文件
-n Don't update file; display results on stdout.
不会更新文件; 显示文件内容信息
-b Use the password from the command line rather than prompting for it. *****
免交互方式输入用户密码信息
-i Read password from stdin without verification (for script usage).
读取密码采用标准输入方式,并不做检查 ???
-m Force MD5 encryption of the password (default).
md5的加密算法
-B Force bcrypt encryption of the password (very secure).
使用bcrypt对密码进行加密
-C Set the computing time used for the bcrypt algorithm
(higher is more secure but slower, default: 5, valid: 4 to 31).
使用bcrypt algorithm对密码进行加密
-d Force CRYPT encryption of the password (8 chars max, insecure).
密码加密方式
-s Force SHA encryption of the password (insecure).
加密方式
-p Do not encrypt the password (plaintext, insecure).
不进行加密
-D Delete the specified user.
删除指定用户
-v Verify password for the specified user.
htpasswd 创建一个有密文信息的密码文件
模板:htpasswd -cb passwordfile username password
htpasswd -cb htpasswd zsb 123456
3.测试Windows:
linux:
curl www.zhangsb.com -u zhangsb:123456
4.修改密码文件权限保证安全
chmod 600 ./htpasswd
nginx网站共享文件服务器模块: ngx_http_autoindex_module
1.举例配置
location / {
autoindex on;
}
2.指令用法
Syntax: autoindex on | off;
Default:
autoindex off;
Context: http, server, location
3.配置
1)编写配置文件
vim www.conf
server{
listen 80;
server_name www.zhangsb.com;
location /{
root /html/www;
autoindex on; -- 开启nginx站点目录索引功能
charset utf-8; -- 修改目录结构中出现的中文乱码问题
}
}
nginx -t
systemctl reload nginx
2)删除首页文件,或者改个名字
mv index.html index.html.bak
3)测试
输入网址,可以看到网站页面变成了目录索引,会显示文件的时间和大小
ps:如果配置没有问题.输入网址后没有出现目录所以,可以在浏览器打开一个无痕窗口再试一下.
补充:
当我们打开上面的1.html时,可以直接查看其内容,而当我们打开1.php时,却会直接下载.
是因为在配置文件/etc/nginx/mime.types,记录了许多文件扩展名,如果记录了,在网站页面就能直接打开,没有记录就会下载,可以自己添加进去.
nginx对网站进行监控状态模块: ngx_http_stub_status_module
1.举例配置
location = /basic_status {
stub_status;
}
2.指令用法
Syntax: stub_status;
Default: —
Context: server, location
3.配置
1)编写配置文件
vim state.conf
server {
listen 80;
server_name state.zhangsb.com
stub_status;
}
nginx -t
systemctl reload nginx
2)编写解析文件
10.0.0.7 state.zhangsb.com
3)测试
说明:
Active connections: 激活的连接数信息
accepts: 接收的连接数汇总(综合) TCP
handled: 处理的连接数汇总(综合) TCP
requests: 总计的请求数量 HTTP协议请求
Reading: nginx服务读取请求报文的数量
Writing: nginx服务响应报文信息数量
Waiting: nginx队列机制,要处理(读取或者响应保存进行保存) 监控
nginx服务location作用模块说明: ngx_http_core_module
1.详细配置
location = / { --- 精确匹配 优先级01 最高
[ configuration A ]
}
location / { --- 默认匹配 优先级04 最低
[ configuration B ]
}
location /documents/ { --- 按照目录进行匹配 优先级03
[ configuration C ]
}
location ^~ /images/ { --- 优先匹配/不识别uri信息中符号信息 优先级02
[ configuration D ]
}
location ~* \.(gif|jpg|jpeg)$ { --- 不区分大小写进行匹配 优先级03
[ configuration E ]
}
2.指令用法
Syntax: location [ = | ~ | ~* | ^~ ] uri { ... }
location @name { ... }
Default: —
在实现跳转之前,先介绍一下别名功能
1. 编写配置文件
server_name www.zhangsb.com zhangsb.com;
2. 配置好解析信息
10.0.0.7 zhangsb.com
3.测试
4.作用
1. 编写网站访问测试
2. 定位要访问的网站服务器
利用nginx实现页面跳转功能,利用rewrite模块是跳转功能: ngx_http_rewrite_module
1.指令用法
Syntax: rewrite regex replacement [flag]; rewite 匹配的正则信息 替换成什么信息
Default: —
Context: server, location, if
跳转方式:
永久跳转: permanent 301 会将跳转信息进项缓存
临时跳转: redirect 302 不会缓存跳转信息
2.配置
vim www.conf
server{
server_name zhangsb.com;
rewrite ^/(.*) http://www.zhangsb.com/ permanent;
}
server{
listen 80;
server_name www.zhangsb.com zhangsb.com;
access_log /var/log/nginx/access_www.log main;
location /{
root /html/www;
autoindex on;
charset utf-8;
}
}
systemctl restart nginx
还有一种方式
server{
listen 80;
server_name www.zhangsb.com zhangsb.com;
access_log /var/log/nginx/access_www.log main;
if ($host ~* "^zhangsb.com$") {
rewrite ^/(.*) http://www.zhangsb.com/ permanent;
}
location /{
root /html/www;
autoindex on;
charset utf-8;
}
}
3.测试
访问zhangsb.com,可以看到出现了301错误
访问www.zhangsb.com,可以访问成功
nginx日志功能配置,访问日志:/var/log/nginx/access.log
1.配置
vim /etc/nginx/nginx.conf
log_format main '$remote_addr - $remote_user [$time_local] "$request" ' 定义日志内容格式
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main; 调用日志格式
2.为不同网站设置日志
1)修改配置文件
vim www.conf
server{
listen 80;
server_name www.zhangsb.com;
access_log /var/log/nginx/access_www.log main; --设置日志文件
location /{
root /html/www;
autoindex on;
charset utf-8;
}
}
systemctl reload nginx
2)查看日志
cd /var/log/nginx
tail -f access_www.log
3)访问网站
可以看到日志显示出来了
PS:其他网站也进行同样的操作
3.参数说明
$remote_addr 显示用户访问源IP地址信息
$remote_user 显示认证的用户名信息
[$time_local] 显示访问网站时间
"$request" 请求报文的请求行信息
$status 用户访问网站状态码信息
$body_bytes_sent 显示响应的数据尺寸信息
$http_referer 记录调用网站资源的连接地址信息(防止用户盗链)
$http_user_agent 记录用户使用什么客户端软件进行访问页面的 (谷歌 火狐 IE 安卓 iphone)
$http_x_forwarded_for 负载均衡
PS: 日志文件信息需要做切割处理
nginx日志功能配置,错误日志: /var/log/nginx/error.log
1.指令用法
Syntax: error_log file [level]; 指定错误日志路径以及错误日志记录的级别
Default: error_log logs/error.log error;
Context: main, http, mail, stream, server, location
2.配置
vim www.conf
server{
listen 80;
server_name www.zhangsb.com;
access_log /var/log/nginx/access_www.log main; --设置日志文件
error_log /var/log/nginx/error.log warn; --设置错误配置
location /{
root /html/www;
autoindex on;
charset utf-8;
}
}
systemctl reload nginx
3.错误级别
debug :调试级别, 服务运行的状态信息和错误信息详细显示 信息越多
info :信息级别, 只显示重要的运行信息和错误信息
notice :通知级别: 更加重要的信息进行通知说明
warn :警告级别: 可能出现了一些错误信息,但不影响服务运行
error :错误级别: 服务运行已经出现了错误,需要进行纠正 推荐选择
crit :严重级别: 必须进行修改调整
alert :严重警告级别: 即警告,而且必须进行错误修改
emerg :灾难级别: 服务已经不能正常运行 信息越少