Nginx 配置 HTTPS的详细过程


Posted in Servers onMay 30, 2022

配置站点使用 https,并且将 http 重定向至 https。

1. nginx 的 ssl 模块安装

查看 nginx 是否安装 http_ssl_module 模块。

$ /usr/local/nginx/sbin/nginx -V

Nginx 配置 HTTPS的详细过程

如果出现 configure arguments: --with-http_ssl_module, 则已安装(下面的步骤可以跳过,进入 nginx.conf 配置)。

下载 nginx 安装包, nginx官网1.14.1稳定版本tar.gz包

# 下载安装包到 src 目录
$ cd /usr/local/src
$ wget http://nginx.org/download/nginx-1.14.1.tar.gz

解压安装包。

$ tar -zxvf nginx-1.14.1.tar.gz

配置 ssl 模块。

$ cd nginx-1.14.1
$ ./configure --prefix=/usr/local/nginx --with-http_ssl_module
  • 使用 make 命令编译(使用make install会重新安装nginx),此时当前目录会出现 objs 文件夹。
  • 用新的 nginx 文件覆盖当前的 nginx 文件。
$ cp ./objs/nginx /usr/local/nginx/sbin/

再次查看安装的模块(configure arguments: --with-http_ssl_module说明ssl模块已安装)。

$ /usr/local/nginx/sbin/nginx -V

nginx version: nginx/1.14.1

configure arguments: –with-http_ssl_module

2. ssl 证书部署

  • 下载申请好的 ssl 证书文件压缩包到本地并解压(这里是用的 pem 与 key 文件,文件名可以更改)。
  • 在 nginx 目录新建 cert 文件夹存放证书文件。
$ cd /usr/local/nginx
$ mkdir cert
  • 将这两个文件上传至服务器的 cert 目录里。

这里使用 mac 终端上传至服务器的 scp 命令(这里需要新开一个终端,不要使用连接服务器的窗口):

$ scp /Users/yourname/Downloads/ssl.pem root@xxx.xx.xxx.xx:/usr/local/nginx/cert/
$ scp /Users/yourname/Downloads/ssl.key root@xxx.xx.xxx.xx:/usr/local/nginx/cert/

scp [本地文件路径,可以直接拖文件至终端里面] [<服务器登录名>@<服务器IP地址>:<服务器上的路径>]

3. nginx.conf 配置

编辑 /usr/local/nginx/conf/nginx.conf 配置文件:

  • 配置 https server。

注释掉之前的 http server 配置,新增 https server:

server {
    # 服务器端口使用443,开启ssl, 这里ssl就是上面安装的ssl模块
    listen       443 ssl;
    # 域名,多个以空格分开
    server_name  baidu.com www.baidu.com;
<span class="hljs-comment"># ssl证书地址</span>
<span class="hljs-attribute">ssl_certificate</span>     /usr/local/nginx/cert/ssl.pem;  <span class="hljs-comment"># pem文件的路径</span>
<span class="hljs-attribute">ssl_certificate_key</span>  /usr/local/nginx/cert/ssl.key; <span class="hljs-comment"># key文件的路径</span>

<span class="hljs-comment"># ssl验证相关配置</span>
<span class="hljs-attribute">ssl_session_timeout</span>  <span class="hljs-number">5m</span>;    <span class="hljs-comment">#缓存有效期</span>
<span class="hljs-attribute">ssl_ciphers</span> ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;    <span class="hljs-comment">#加密算法</span>
<span class="hljs-attribute">ssl_protocols</span> TLSv1 TLSv1.<span class="hljs-number">1</span> TLSv1.<span class="hljs-number">2</span>;    <span class="hljs-comment">#安全链接可选的加密协议</span>
<span class="hljs-attribute">ssl_prefer_server_ciphers</span> <span class="hljs-literal">on</span>;   <span class="hljs-comment">#使用服务器端的首选算法</span>

<span class="hljs-attribute">location</span> / {
    <span class="hljs-attribute">root</span>   html;
    <span class="hljs-attribute">index</span>  index.html index.htm;
}}

将 http 重定向 https

server {
    listen       80;
    server_name  baidu.com www.baidu.com;
    return 301 https://$server_name$request_uri;
}

4. 重启 nginx

$ /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf

如果 80 端口被占用,用kill [id]来结束进程:

# 查看端口使用
$ netstat -lntp

Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:80 0.0.0.0: LISTEN 21307/nginx: master
tcp 0 0 0.0.0.0:22 0.0.0.0: LISTEN 3072/sshd
tcp 0 0 0.0.0.0:443 0.0.0.0? LISTEN 21307/nginx: master

# 结束 80 端口进程
$ kill 21307

再次重启 nginx :

无信息提示就成功啦~

到此这篇关于Nginx 配置 HTTPS 完整过程的文章就介绍到这了!


Tags in this post...

Servers 相关文章推荐
nginx对http请求处理的各个阶段详析
Mar 31 Servers
小程序后台PHP版本部署运行 LNMP+WNMP
Apr 01 Servers
详解使用内网穿透工具Ngrok代理本地服务
Mar 31 Servers
微信告警的zabbix监控系统 监控整个NGINX集群
Apr 18 Servers
Window server 2012 R2 AD域的组策略相关设置
Apr 28 Servers
Nginx配置之禁止指定IP访问
May 02 Servers
nginx rewrite功能使用场景分析
May 30 Servers
Linux磁盘管理方法介绍
Jun 01 Servers
windows server 2012安装FTP并配置被动模式指定开放端口
Jun 10 Servers
Linux服务器离线安装 nginx的详细步骤
Jun 16 Servers
如何让你的Nginx支持分布式追踪详解
Jul 07 Servers
教你使用Ubuntu搭建DNS服务器
Sep 23 Servers
关于windows server 2012 DC 环境 重启后蓝屏代码:0xc00002e2的问题
May 25 #Servers
聊聊配置 Nginx 访问与错误日志的问题
May 25 #Servers
利用nginx搭建RTMP视频点播、直播、HLS服务器
详解Nginx的超时keeplive_timeout配置步骤
May 25 #Servers
nginx 配置指令之location使用详解
May 25 #Servers
zabbix配置nginx监控的实现
May 25 #Servers
nginx 添加http_stub_status_module模块
May 25 #Servers
You might like
在字符串指定位置插入一段字符串的php代码
2010/02/16 PHP
PHP对象转换为数组函数(递归方法)
2012/02/04 PHP
PHP图像处理之imagecreate、imagedestroy函数介绍
2014/11/19 PHP
ThinkPHP3.2.2的插件控制器功能
2015/03/05 PHP
深入浅出php socket编程
2015/05/13 PHP
浅谈thinkphp5 instance 的简单实现
2017/07/30 PHP
PHP CURL中传递cookie的方法步骤
2019/05/09 PHP
php apache开启跨域模式过程详解
2019/07/08 PHP
js客户端快捷键管理类的较完整实现和应用
2010/06/08 Javascript
Javascript面向对象之四 继承
2011/02/08 Javascript
网页打开自动最大化的js代码
2012/08/22 Javascript
js 使用form表单select类实现级联菜单效果
2012/12/19 Javascript
Javascript实现飞动广告效果的方法
2015/05/25 Javascript
Ubuntu系统下Angularjs开发环境安装
2016/09/01 Javascript
ES6概念 Symbol.keyFor()方法
2016/12/25 Javascript
react.js CMS 删除功能的实现方法
2017/04/17 Javascript
Angular 2.x学习教程之结构指令详解
2017/05/25 Javascript
js分页之前端代码实现和请求处理
2017/08/04 Javascript
基于jquery的on和click的区别详解
2018/01/15 jQuery
解决vue.js 数据渲染成功仍报错的问题
2018/08/25 Javascript
node.js中对Event Loop事件循环的理解与应用实例分析
2020/02/14 Javascript
详解webpack的文件监听实现(热更新)
2020/09/11 Javascript
mustache.js实现首页元件动态渲染的示例代码
2020/12/28 Javascript
Python标准库之sqlite3使用实例
2014/11/25 Python
深度定制Python的Flask框架开发环境的一些技巧总结
2016/07/12 Python
Python编程实现的图片识别功能示例
2017/08/03 Python
对Python Pexpect 模块的使用说明详解
2019/02/14 Python
django将网络中的图片,保存成model中的ImageField的实例
2019/08/07 Python
Python count函数使用方法实例解析
2020/03/23 Python
python用分数表示矩阵的方法实例
2021/01/11 Python
关于探究python中sys.argv时遇到的问题详解
2021/02/23 Python
警察群众路线对照检查材料思想汇报
2014/10/01 职场文书
幼儿园个人师德总结
2015/02/06 职场文书
项目验收申请报告
2015/05/15 职场文书
js之ajax文件上传
2021/05/13 Javascript
FP-growth算法发现频繁项集——发现频繁项集
2021/06/24 Python