为什么要禁止 IP 访问呢? 如果你开启了 cdn, 但是不禁止 IP 访问, 会暴露站源 IP. 至于为什么会暴露, 可能需要另外写一篇文章才能解释.
一. 禁止 IP 访问 80 端口
禁止 IP 访问 80 很简单, nginx 配置文件 http 段里面添加下面这段代码即可:
👨🚒🛍🦯🥲🖕
- server
- {
- listen 80 default_server;
- server_name _;
💅🚤🥩🆗🐕 - return 444;
- }
复制代码
二. 禁止 IP访问 443 端口
🤝🚗🧊❓🐻
这个要一个 ssl 证书, 最好不是自己域名申请的证书. 可以用 openssl 自己签发一张.
执行命令:
- openssl genrsa -des3 -out none.key 1024
复制代码
✋🛑🍒🈳🦖
这里生成时候会要求必须输入 key 文件密码。因为以后要给 nginx 使用,每次 reload -s nginx 配置时候都要你验证这个文件密码.
这里为了避免麻烦, 可以取消这个密码:
👨🦱👗🪟😛🤳
- mv none.key x.key
- openssl rsa -in x.key -out none.key
- rm x.key
复制代码
👄🌕🍭🆘🐥得到证书 key 文件, 然后根据这个 key 文件生成证书请求文件.
执行命令:
- openssl req -new -key none.key -out none.csr
复制代码 👵👞✏🤐👂
输入你刚才的文件密码, 根据提示填写
最后根据这 2 个文件(none.key none.csr)生成 crt 证书文件,执行命令:
👦👔🖥😷🤌
- sudo openssl x509 -req -days 3650 -in none.csr -signkey none.key -out none.crt
复制代码
3650 是有效期, 使用到的文件是 none.key 和 none.crt 文件
nginx 配置 http 段里面添加
👎🚠🍽❗🦋- server
- {
- listen 443 default_server;
- server_name _;
- return 444;🥷👓🔒💩🖐
- ssl_certificate /root/none.crt;
- ssl_certificate_key /root/none.key;
- ssl_session_cache shared:SSL:3m;
- 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;
- }
复制代码