Nginx 几个模块status,access ,refere使用
1、status用来显示状态。默认为enable,可以通过以下命令查找status模块名。源码安装nginx编译时加上这个模块,这个功能才会存在,即: --with-http_stub_status_module[root@k8smaster nginx-1.16.0]# ./configure--help|grep status--with-http_stub_status_moduleenab
1、status
用来显示状态。默认为enable,可以通过以下命令查找status模块名。源码安装nginx编译时加上这个模块,这个功能才会存在,即: --with-http_stub_status_module
[root@k8smaster nginx-1.16.0]# ./configure --help|grep status
--with-http_stub_status_module enable ngx_http_stub_status_module
[root@k8smaster nginx-1.16.0]#
配置nginx配置文件,显示web服务器状态,可以在http server 或localtion下启用status,如下:
location /status {
root html;
stub_status;
index index.html index.htm;
}
重启服务后,浏览时会显示状态信息,如下图:
一般这个状态只要网站运维人员知道就可以了,不需要其他访问到。怎样才能拒绝其他主机访问这个呢?这就需要使用nginx另一个功能:access
2、access
access是访问控制,
注意:默认功能是disable,即预编译时,如果增加了这个功能,则是没有启动访问控制功能,是被禁用的,如果编译时没有增加,才会启用这个功能。
[root@k8smaster nginx-1.16.0]# ./configure --help|grep access
--without-http_access_module disable ngx_http_access_module
设定上面的status只允许本机可以查看,其他主机均被拒绝。
nginx配置文件里只需要设定:allow 本机ip deny all即可。
location /status {
root html;
stub_status;
allow 192.168.68.127;
deny all;
index index.html index.htm;
}
显示结果:
其他主机访问,显示被拒绝,如下:
本机访问,由于本机是linux系统,通过curl访问,显示可以访问到,下如:
3、referer
使用这个模块,可以设定防盗链。
什么是防盗链?顾名思意就是,浏览的内容并不是自己本站的本身内容,是引用其他网站的资料。如果不想让别人的web服务引用自己的网站资料,可以通过referer功能设定防盗链。比如,设定,浏览到图片时,出现图裂。
举例:
在192.168.68.127服务器上,增加一个vim.gif图片,本机访问可以显示到这张练习vim命令的图片。
现在在192.168.68.129服务器上,增加一个测试页,用来引用192.168.68.127上的这张图片,浏览192.168.68.129这台服务器测试页,可以打开192.168.68.127上设定的图片。
vim test.html
<html>
<h1> welcome to nginx</h1>
<img src="http://192.168.68.127/vim.gif">
</html>
现在,把192.168.68.127 Web服务器上设定防盗链
location ~* \.(gif|jpg|png|swf)${
valid_referers 192.168.68.127;
root /usr/local/nginx/html
if ($invalid_referer) {
return 403;
}
}
nginx服务reload后,再打开192.168.68.129上的测试页时,可以看到图片无法再被打开,同时,图片出现图裂
这个可以很好预防别人来调取自己web服务上的资源。
nginx功能非常强大,功能模块也非常多,这里只演示了以上三种。
nginx官网中有对各模块使用详细介绍:http://nginx.org/en/docs/ 。
更多推荐
所有评论(0)