## 安装 SSL 模块
> 该模块需要[OpenSSL](http://www.openssl.org/)库。
### 检查 SSL
如果是通过编译安装,一般默认情况下不构建此模块。
检查是否存在 SSL 模块:
~~~shell
nginx -V
~~~
![](https://img.kancloud.cn/bc/43/bc43e393972c7d607ead91220dbb9ad6_1105x271.png)
出现 `--with-http_ssl_module` 则已安装。
### 安装
1. 在 Nginx 解压源码目录下,执行命令:
~~~shell
./configure --with-http_ssl_module
~~~
2. 编译
~~~shell
make
~~~
3. 备份原有 Nginx
~~~shell
cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak
~~~
4. 将编译好的 Nginx 覆盖原有 Nginx
~~~shell
cp /root/nginx/objs/nginx /usr/local/nginx/sbin/
~~~
5. 在 nginx 安装目录下检查是否安装成功
~~~shell
nginx -V
~~~
## 配置 SSL 证书
### 获取证书
在 ssl 证书控制台下载证书,完成后上传到服务器(路径自定义)
### 修改虚拟机配置
为了减少处理器负载,建议
* 将 `worker_number` 的值设置为 CPU 核的数量
* 启动 `keep-alive` 连接
* 启动`shared` 会话缓存
* 禁用`builtin` 会话缓存
* 增加会话生命周期
~~~text
worker_processes auto;
http {
...
server {
listen 443 ssl; # HTTPS 默认端口号
keepalive_timeout 70;
ssl on;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers AES128-SHA:AES256-SHA:RC4-SHA:DES-CBC3-SHA:RC4-MD5;
ssl_certificate /usr/local/nginx/conf/cert.pem;
ssl_certificate_key /usr/local/nginx/conf/cert.key;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
...
}
~~~
* **ssl_protocols**:启用指定的协议
TLSv1.1和TLSv1.2(1.1.13、1.0.12)仅在OpenSSL为1.0.1或更高版本时有效。
TLSv1.3(1.13.0)仅在OpenSSL为1.1.1及以上版本时有效。
* **ssl_ciphers**:加密算法
以OpenSSL库为标准格式指定
~~~shell
openssl ciphers # 查看 OpenSSL 加密算法列表
~~~
* **ssl_certificate**:证书文件的路径
* **ssl_certificate_key**:秘钥文件的路径
* **ssl_session_cache**:存储会话参数的缓存的类型和大小
* `off` 严格禁止使用会话缓存:nginx 明确告诉客户端会话可能不会被重用。
* `none` 温和地禁止使用会话缓存:nginx 告诉客户端会话可以被重用,但实际上并没有将会话参数存储在缓存中。
* `builtin` OpenSSL 中内置的缓存;仅由一个工作进程使用。缓存大小在会话中指定。如果未给出大小,则等于 20480 个会话。使用内置缓存会导致内存碎片。
* `shared` 所有工作进程之间共享的缓存。缓存大小以字节为单位指定;一兆字节可以存储大约 4000 个会话。每个共享缓存都应该有一个任意名称。同名缓存可用于多个虚拟服务器。
* **ssl_session_timeout**:缓存会话有效期
> 详细配置:https://nginx.org/en/docs/http/ngx_http_ssl_module.html
- PHP
- PHP 核心架构
- PHP 生命周期
- PHP-FPM 详解
- PHP-FPM 配置优化
- PHP 命名空间和自动加载
- PHP 运行模式
- PHP 的 Buffer(缓冲区)
- php.ini 配置文件参数优化
- 常见面试题
- 常用函数
- 几种排序算法
- PHP - 框架
- Laravel
- Laravel 生命周期
- ThinkPHP
- MySQL
- 常见问题
- MySQL 索引
- 事务
- 锁机制
- Explain 使用分析
- MySQL 高性能优化规范
- UNION 与 UNION ALL
- MySQL报错:sql_mode=only_full_group_by
- MySQL 默认的 sql_mode 详解
- 正则表达式
- Redis
- Redis 知识
- 持久化
- 主从复制、哨兵、集群
- Redis 缓存击穿、穿透、雪崩
- Redis 分布式锁
- RedisBloom
- 网络
- 计算机网络模型
- TCP
- UDP
- HTTP
- HTTPS
- WebSocket
- 常见几种网络攻击方式
- Nginx
- 状态码
- 配置文件
- Nginx 代理+负载均衡
- Nginx 缓存
- Nginx 优化
- Nginx 配置 SSL 证书
- Linux
- 常用命令
- Vim 常用操作命令
- Supervisor 进程管理
- CentOS与Ubuntu系统区别
- Java
- 消息队列
- 运维
- RAID 磁盘阵列
- 逻辑分区管理 LVM
- 业务
- 标准通信接口设计
- 业务逻辑开发套路的三板斧
- 微信小程序登录流程
- 7种Web实时消息推送方案
- 用户签到
- 用户注册-短信验证码
- SQLServer 删除同一天用户重复签到
- 软件研发完整流程
- 前端
- Redux
- 其他
- 百度云盘大文件下载
- 日常报错记录
- GIT
- SSL certificate problem: unable to get local issuer certificate
- NPM
- reason: connect ECONNREFUSED 127.0.0.1:31181
- SVN
- SVN客户端无法连接SVN服务器,主机积极拒绝
- Python
- 基础
- pyecharts图表
- 对象
- 数据库
- PySpark
- 多线程
- 正则
- Hadoop
- 概述
- HDFS