Nginx 配置 SSL 证书、黑白名单
HTTP 协议由于其简单快速、占用资源少,是一种用于分布式、协作式和超媒体信息系统的应用层协议,是互联网数据通信的基础,一直被用于网站服务器和浏览器之间进行数据传输。然而,HTTP 是明文协议,不会对数据进行任何方式的加密,在数据传输过程中存在明显安全隐患。 当黑客攻击并窃取了网站服务器和浏览器之间的传输报文时,可以直接读取传输的信息,造成网站或用户资料的泄露。因此,HTTP 不适用于敏感信息的传播,此时需要引入 HTTPS(超文本传输安全协议)。 HTTPS HTTPS(Hypertext Transfer Protocol Secure)是一种以计算机网络安全通信为目的的传输协议。它在 HTTP 基础上加入了 SSL/TLS 层,从而具备保护数据交换的隐私性、完整性和对网站服务器身份认证的功能。简单来说,HTTPS 就是安全版的 HTTP。 在 Nginx 服务器上安装证书 您可以将已签发的 SSL 证书安装到 Nginx 或 Tengine 服务器上。本文介绍如何下载 SSL 证书并在 Nginx 或 Tengine 服务器上完成配置。 编辑 Nginx 配置文件(nginx.conf),修改与证书相关的配置。 # 以下属性中,以 ssl 开头的属性表示与证书配置有关。 server { listen 443 ssl; # 配置 HTTPS 的默认访问端口为 443。 # 如果未在此处配置 HTTPS 的默认访问端口,可能会导致 Nginx 无法启动。 # 如果您使用 Nginx 1.15.0 及以上版本,请使用 listen 443 ssl 代替 listen 443 和 ssl on。 # 网上有些文档仍在使用 ssl on,该写法已被官方弃用。 server_name yourdomain; root html; index index.html index.htm; ssl_certificate cert/yourdomain.com.crt; # (服务器证书) ssl_certificate_key cert/yourdomain.com.key; # (私钥文件) ssl_session_timeout 5m; ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; # 表示使用的加密套件类型。 ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3; # 表示支持的 TLS 协议版本,请根据实际安全策略评估是否启用 TLSv1.1。 ssl_prefer_server_ciphers on; location / { root html; # Web 网站程序存放目录。 index index.html index.htm; } } 设置 HTTP 请求自动跳转 HTTPS server { listen 80; server_name yourdomain; # 需将 yourdomain 替换为证书绑定的域名。 rewrite ^(.*)$ https://$host$1 permanent; # 将所有 HTTP 请求重定向到 HTTPS。 location / { index index.html index.htm; } } 或者可以这样 server { listen 80; server_name dev.wangsl.com; return 301 https://$server_name$request_uri; } 其他 Web 服务器或其他语言的实现方式此处不赘述。 记录一个 SSL 配置生成器 SSL Configuration Generator https://ssl-config.mozilla.org/ Nginx 的黑白名单 Nginx 提供了基于 IP 的简单访问控制功能。例如,若要禁止 1.2.3.4 这个 IP 地址访问服务器,可在配置文件中添加如下指令: ...