nginx配置禁止使用IP访问网站80/443端口(配置自签名SSL证书),返回403错误代码

分类:笔记 日期:2021-06-03 作者:caocaofff 浏览:93

以前在搭建网站时,没有加这个配置项,所以当时能用IP直接访问到我的博客。
现在服务器上有至少5个网站,所以绝不能这么放任不管了,也可以禁止别人恶意解析。
在nginx配置文件里加上以下代码,可以禁止用户使用IP直接访问网站,使用IP访问时将返回403错误代码。

server {
  listen 80 default;
  server_name _;
  return 403;
}

这是最简单的配置,但只能适用于别人访问80端口,如果访问443端口,那么网站就又被暴露了!
所以必须追加下面的配置:

    server {
      listen 443 default;
      server_name _;
      ssl_certificate /etc/nginx/ssl/cert_rsa/none.crt;
      ssl_certificate_key /etc/nginx/ssl/cert_rsa/none.key;
      ssl_session_timeout 5m;
      ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
      ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
      ssl_prefer_server_ciphers on;
      return 403;
    }

如果就这么添加配置,在使用nginx -t检测时会报错,因为你没有供其使用的SSL证书。所以我们必须要自签SSL证书。
这里我们为了兼容性就使用rsa算法,没必要整ECC了:

cd /etc/nginx/ssl/cert_rsa
#生成key,必须要输入密码
openssl genrsa -des3 -out none.key 2048
#为了避免麻烦可以删除生成时必须输入的密码
openssl rsa -in none.key -out none1.key
mv none1.key none.key
#然后根据这个key文件生成证书请求文件,生成时需要填写信息,但你可以一路回车跳过
openssl req -new -key none.key -out none.csr
#根据这2个文件(none.key none.csr)生成crt证书文件
openssl x509 -req -days 3650 -in none.csr -signkey none.key -out none.crt

这里 3650 天是证书有效期,有效期大家随意。最后使用到的文件是 key 和 crt 文件。

最终的效果:
kpga83fw.png
kpgarxid.png

评论 (暂无评论)

发表评论

昵称:  
邮箱:  
网址:

captcha