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反向代理时如何保持长连接
Mar 31 Servers
nginx请求限制配置方法
Jul 09 Servers
总结高并发下Nginx性能如何优化
Nov 01 Servers
图文详解nginx日志切割的实现
Jan 18 Servers
Kubernetes部署实例并配置Deployment、网络映射、副本集
Apr 01 Servers
如何Tomcat中使用ipv6地址
May 06 Servers
详解如何使用Nginx解决跨域问题
May 06 Servers
Apache SeaTunnel实现 非CDC数据抽取
May 20 Servers
项目中Nginx多级代理是如何获取客户端的真实IP地址
May 30 Servers
nginx静态资源的服务器配置方法
Jul 07 Servers
zabbix 代理服务器的部署与 zabbix-snmp 监控问题
Jul 15 Servers
nginx配置指令之server_name的具体使用
Aug 14 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类的封装与继承详解
2015/09/29 PHP
Zend Framework数据库操作方法实例总结
2016/12/11 PHP
发一个自己用JS写的实用看图工具实现代码
2008/07/26 Javascript
网易JS面试题与Javascript词法作用域说明
2010/11/09 Javascript
多次注册事件会导致一个事件被触发多次的解决方法
2013/08/12 Javascript
jQuery中offsetParent()方法用法实例
2015/01/19 Javascript
JS简单计算器实例
2015/01/20 Javascript
jQuery实现加入购物车飞入动画效果
2015/03/14 Javascript
JS实现仿Windows经典风格的选项卡Tab切换代码
2015/10/20 Javascript
jQuery实现的网页右下角tab样式在线客服效果代码
2015/10/23 Javascript
JS 实现计算器详解及实例代码(一)
2017/01/08 Javascript
利用Js+Css实现折纸动态导航效果实例源码
2017/01/25 Javascript
Angular2入门--架构总览
2017/03/29 Javascript
原生JS实现圆环拖拽效果
2017/04/07 Javascript
JS利用cookies设置每隔24小时弹出框
2017/04/20 Javascript
源码分析Vue.js的监听实现教程
2017/04/23 Javascript
js前端实现图片懒加载(lazyload)的两种方式
2017/04/24 Javascript
Node.js使用gm拼装sprite图片
2017/07/04 Javascript
JQuery Ajax执行跨域请求数据的解决方案
2018/12/10 jQuery
vue轻量级框架无法获取到vue对象解决方法
2019/05/12 Javascript
[01:00:25]2018DOTA2亚洲邀请赛3月30日 小组赛A组 VG VS Liquid
2018/03/31 DOTA
python发送邮件脚本
2018/05/22 Python
python爬虫之urllib库常用方法用法总结大全
2018/11/14 Python
Linux CentOS Python开发环境搭建教程
2018/11/28 Python
python获取整个网页源码的方法
2020/08/03 Python
LORAC官网:美国彩妆品牌
2019/08/27 全球购物
澳大利亚在线性感内衣商店:Fantasy Lingerie
2021/02/07 全球购物
乐观大学生的自我评价
2014/01/10 职场文书
产品促销活动策划书
2014/01/15 职场文书
现场施工员岗位职责
2014/03/10 职场文书
2014年办公室文员工作总结
2014/11/12 职场文书
感谢信模板大全
2015/01/23 职场文书
2016年中学清明节活动总结
2016/04/01 职场文书
学生早退检讨书(范文)
2019/08/19 职场文书
nginx请求限制配置方法
2021/07/09 Servers
Java多线程并发FutureTask使用详解
2022/06/28 Java/Android