Nginx 配置禁止通过IP地址直接访问服务器上的Web服务
默认情况下Nginx配置完毕后,是允许ip地址直接访问的。直接使用IP访问会有一定的安全风险。
那么如何在Nginx中通过配置来禁止通过IP直接访问服务器的Web服务呢?3步解决问题。
1,打开 /etc/nginx 目录下的 nginx.conf
在修改前先备份 nginx.conf 文件
> \cp nginx.conf nginx.conf.[date]
2,在http.server里添加server配置(如果已有server配置,根据实际情况进行修改)
http {
...
server
{
listen 80 default_server;
listen 443 default_server;
server_name _;
server_tokens off;
return 403;
ssl on;
ssl_certificate xx.pem; #证书文件绝对路径。
ssl_certificate_key xx.key; #证书文件绝对路径。
ssl_session_timeout 60m;
ssl_ciphers xxx; #使用此加密套件。
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #使用该协议进行配置。
ssl_prefer_server_ciphers on;
}
..
}
server配置说明:
server_tokens off; 如果不配置,返回的页面会包含nginx版本,设置后,返回的页面不再包含nginx版本。
default_server; 代表默认无匹配的时候由当前的server处理。
server_name _;代表无效域名。
合起来的意思就是,其他server没有匹配的,全部由当前server进行匹配处理。
该server匹配到之后,处理的结果就是直接返回403状态
3,重启nginx
检查nginx:
> nginx -t
重载nginx:
> sudo nginx -s reload
这个时候我们通过http://ip 或者https://ip 都将返回403
常见错误:
nginx: [emerg] a duplicate default server for 0.0.0.0:80 in /etc/nginx/nginx.conf
方案:将 /etc/nginx/sites-available/default 文件中 server 部分注释即可
我的笔记