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 地址访问服务器,可在配置文件中添加如下指令: ...

2022-07-12 · 3 min

Lsync+rsync 实现跨机器文件同步

Lsyncd 即 Live Syncing Daemon,它是开源的数据实时同步工具(后台进程),基于 inotify 和 rsync。Lsyncd 会密切监测本地服务器上的参照目录,当发现目录下有文件或目录变更后,立刻通知远程服务器,并通过 rsync 或 rsync+ssh 方式实现文件同步。这样做的好处就是,你可以利用 Lsyncd 搭建一个 VPS 同步镜像,应用场景例如 CDN 镜像、网站数据备份、网站搬家等等。 ...

2022-06-16 · 2 min

SSH 免密配置及 Ansible 基础知识

Secure Shell(安全外壳协议,简称 SSH)是一种加密的网络传输协议,在不安全的网络中为网络服务提供安全的传输。 Ansible 是 Python 中的一套模块,一套自动化工具,只需要使用 SSH 协议连接即可用来系统管理、自动化执行命令等任务。 ...

2021-10-12 · 4 min