Nginx 禁止 IP 访问并防止泄漏 SSL 证书
引言
本文旨在使用 Nginx 禁止 IP 直接访问,并防止在https://ip地址
访问时暴露网站的 SSL 证书。
OpenSSL 生成自签证书
安装OpenSSL
apt update apt install openssl
|
生成自签名 SSL 证书和密钥
mkdir /etc/nginx/ssl/ openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -keyout /etc/nginx/ssl/default.key -out /etc/nginx/ssl/default.crt
|
Nginx 配置
设置一个默认的 server 块来拦截所有未指定的请求(通常是直接通过 IP 访问的)并返回错误代码,比如 444 (无响应,推荐)或者 403 (禁止访问)。
配置示例:
server { listen 80 default_server; listen [::]:80 default_server; listen 443 ssl default_server; listen [::]:443 ssl default_server; server_name _; ssl_certificate /etc/nginx/ssl/default.crt; ssl_certificate_key /etc/nginx/ssl/default.key;
return 444; }
server { listen 80; listen [::]:80; listen 443 ssl; listen [::]:443 ssl;
server_name example.com www.example.com;
ssl_certificate /etc/nginx/ssl/example.com.crt; ssl_certificate_key /etc/nginx/ssl/example.com.key;
root /var/www/html; index index.html index.htm; }
|
重启Nginx
nginx -t systemctl restart nginx
|
完成效果
HTTP访问
HTTPS访问