实验环境: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

nginx 配内网ip nginx 内网 外网_nginx

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文件

nginx 配内网ip nginx 内网 外网_linux_02


4)测试
这里的域名解析的ip为外网地址10.0.0.0,当用它来访问时,出现了403的错误,说明进行访问成功

nginx 配内网ip nginx 内网 外网_linux_03


当IP地址改回内网地址时,可以看到是访问成功

nginx 配内网ip nginx 内网 外网_linux_04

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

nginx 配内网ip nginx 内网 外网_nginx_05


nginx 配内网ip nginx 内网 外网_vim_06


3.测试Windows:

nginx 配内网ip nginx 内网 外网_vim_07


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)测试
输入网址,可以看到网站页面变成了目录索引,会显示文件的时间和大小

nginx 配内网ip nginx 内网 外网_nginx_08


ps:如果配置没有问题.输入网址后没有出现目录所以,可以在浏览器打开一个无痕窗口再试一下.
补充:
当我们打开上面的1.html时,可以直接查看其内容,而当我们打开1.php时,却会直接下载.

nginx 配内网ip nginx 内网 外网_nginx_09


是因为在配置文件/etc/nginx/mime.types,记录了许多文件扩展名,如果记录了,在网站页面就能直接打开,没有记录就会下载,可以自己添加进去.

nginx 配内网ip nginx 内网 外网_nginx_10

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)测试

nginx 配内网ip nginx 内网 外网_vim_11


说明:

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.测试

nginx 配内网ip nginx 内网 外网_html_12

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/$1 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/$1 permanent;
	}
	location /{
    	root    /html/www;
    	autoindex on;
    	charset utf-8;
	}
}
3.测试

访问zhangsb.com,可以看到出现了301错误

nginx 配内网ip nginx 内网 外网_linux_13


访问www.zhangsb.com,可以访问成功

nginx 配内网ip nginx 内网 外网_vim_14

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;                                调用日志格式

nginx 配内网ip nginx 内网 外网_nginx 配内网ip_15

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)访问网站

nginx 配内网ip nginx 内网 外网_nginx_16


可以看到日志显示出来了

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       :灾难级别: 服务已经不能正常运行                      信息越少