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 location优先级的深入讲解
Mar 31 Servers
JVM上高性能数据格式库包Apache Arrow入门和架构详解(Gkatziouras)
May 26 Servers
Nginx四层负载均衡的配置指南
Jun 11 Servers
Nginx源码编译安装过程记录
Nov 17 Servers
nginx中封禁ip和允许内网ip访问的实现示例
Mar 17 Servers
Dashboard管理Kubernetes集群与API访问配置
Apr 01 Servers
Linux中如何安装并部署Redis
Apr 18 Servers
鲲鹏 CentOS 7 安装Python3.7
May 11 Servers
解决Vmware虚拟机安装centos8报错“Section %Packages Does Not End With %End. Pane Is Dead”
Jun 01 Servers
openEuler 搭建java开发环境的详细过程
Jun 10 Servers
Elasticsearch6.2服务器升配后的bug(避坑指南)
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
【COS正片】蕾姆睡衣cos,纯洁可爱被治愈了 cn名濑弥七
2020/03/02 日漫
php Notice: Undefined index 错误提示解决方法
2010/08/29 PHP
Laravel框架中扩展函数、扩展自定义类的方法
2014/09/04 PHP
PHP 实现链式操作
2021/03/09 PHP
在b/s开发中经常用到的javaScript技术
2006/08/23 Javascript
js 蒙版进度条(结合图片)
2010/03/10 Javascript
Js如何判断客户端是PC还是手持设备简单分析
2012/11/22 Javascript
用unescape反编码得出汉字示例
2014/04/24 Javascript
jQuery入门介绍之基础知识
2015/01/13 Javascript
javascript动态创建表格及添加数据实例详解
2015/05/13 Javascript
jquery获取当前元素索引值用法实例
2015/06/10 Javascript
JS实现兼容各种浏览器的高级拖动方法完整实例【测试可用】
2016/06/21 Javascript
jQuery实现简单的手风琴效果
2020/04/17 jQuery
JavaScript实现购物车基本功能
2017/07/21 Javascript
javascript按钮禁用和启用的效果实例代码
2017/10/29 Javascript
基于 Vue.js 之 iView UI 框架非工程化实践记录(推荐)
2017/11/21 Javascript
深入理解Angular4订阅(Subscribe)与取消
2017/11/22 Javascript
node.js 基于cheerio的爬虫工具的实现(需要登录权限的爬虫工具)
2019/04/10 Javascript
微信公众号获取用户地理位置并列出附近的门店的示例代码
2019/07/25 Javascript
Vue.use()在new Vue() 之前使用的原因浅析
2019/08/26 Javascript
vue组件中传值EventBus的使用及注意事项说明
2020/11/16 Javascript
微信小程序弹窗禁止页面滚动的实现代码
2020/12/30 Javascript
python出现&quot;IndentationError: unexpected indent&quot;错误解决办法
2017/10/15 Python
Python IDLE入门简介
2017/12/08 Python
python 把文件中的每一行以数组的元素放入数组中的方法
2018/04/29 Python
Python3自动签到 定时任务 判断节假日的实例
2018/11/13 Python
python 常见字符串与函数的用法详解
2018/11/23 Python
计算机二级python学习教程(3) python语言基本数据类型
2019/05/16 Python
html5本地存储 localStorage操作使用详解
2016/09/20 HTML / CSS
法国一家芭蕾舞鞋公司:Repetto
2018/11/12 全球购物
吉列剃须刀英国官网:Gillette英国
2019/03/28 全球购物
Noon埃及:埃及在线购物
2019/11/26 全球购物
写clone()方法时,通常都有一行代码,是什么?
2012/10/31 面试题
中学清明节活动总结
2014/07/04 职场文书
驳回起诉裁定书
2015/05/19 职场文书
建党伟业电影观后感
2015/06/01 职场文书