说明:之前介绍过Nginx安装和负载均衡的使用(参考:Nginx使用),本文补充介绍Nginx的一些用法
隐藏Nginx版本信息
正常情况,可在Nginx代理的请求中查看到当前Nginx的版本信息,如下:
可通过在Nginx配置中增加以下配置项,隐藏Nginx的版本信息,提高系统安全性;
server_tokens off;
添加后,重新加载配置,再看,请求中就隐去了Nginx的版本;
设置黑名单
配置文件中,设置以下配置项,可禁止指定IP地址访问;
location / {
deny 10.0.0.1;
}
本机访问没有问题;
用被禁止的另一台服务器访问,被拒绝(403);
与deny
指令对应的是allow
,表示允许访问的IP地址,比如仅允许制定IP地址访问,就可以这样配置;
location / {
allow 允许访问的IP;
deny all;
}
以上配置,本机访问就403了,指定的另一台服务器访问就OK。
需要注意配置顺序,限制需要从小到大,如果第一行是deny all;
后面的allow
指令都不会生效了。另外,这两个指令可以放在http标签内,表示全局配置,对所有server生效,也可以放在指定的location里,仅拒绝/允许访问该代理的请求,并且可以指定被拒绝时返回的页面,非常灵活。
还支持IPv6,如下,是官网电子书提供的样例;
设置备份服务器
可在负载均衡配置中,增加以下配置,指定主服务器不可用时发挥作用;
worker_processes 1;
events {
worker_connections 1024;
}
http {
server_tokens off;
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
upstream backend {
server 127.0.0.1:8081 weight=1;
server 127.0.0.1:8082 weight=2;
server 127.0.0.1:8083 backup;
}
server {
listen 80;
server_name localhost;
location /hello {
proxy_pass http://backend/hello;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
如上,当8081、8082端口对应的服务器无法使用时,可访问到备用的8083端口对应的服务器。如下,创建一个简单的项目,三个实例,对应三个端口:
启动后,访问页面,如下,反复刷新,可见8081、8082端口呈1:2比例出现,但不见8083;
此时,停止8081、8082端口对应的服务,模拟宕机,再次访问页面;
反复刷新,只见8083
总结
本文部分参考官网提供的电子书《Nginx完全指南》,可在Nginx中文官方网站填写相关信息获取,或者私信我,我转发一份给你。