为什么要禁止 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;
- }
复制代码