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中多个if里面proxy_pass的方法
Mar 31 Servers
Nginx域名转发使用场景代码实例
Mar 31 Servers
Nginx内网单机反向代理的实现
Nov 07 Servers
Linux安装apache服务器的配置过程
Nov 27 Servers
Nginx设置HTTPS的方法步骤 443证书配置方法
Mar 21 Servers
Minikube搭建Kubernetes集群
Mar 31 Servers
Nginx虚拟主机的配置步骤过程全解
Mar 31 Servers
详解使用内网穿透工具Ngrok代理本地服务
Mar 31 Servers
docker-compose部署Yapi的方法
Apr 08 Servers
Nginx+Tomcat负载均衡多实例详解
Apr 11 Servers
Zabbix对Kafka topic积压数据监控的解决方案
Jul 07 Servers
windows server2012 R2下安装PaddleOCR服务的的详细步骤
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将数据导入到Foxmail
2006/10/09 PHP
php根据某字段对多维数组进行排序的方法
2015/03/07 PHP
Yii中CGridView禁止列排序的设置方法
2016/07/12 PHP
PHP 等比例缩放图片详解及实例代码
2016/09/18 PHP
javascript 屏蔽鼠标键盘的几段代码
2008/01/02 Javascript
jquery+json实现的搜索加分页效果
2010/03/31 Javascript
心扬JS分页函数代码
2010/09/10 Javascript
javascript和jquery修改a标签的href属性
2013/12/16 Javascript
Javascript验证上传图片大小[前台处理]
2014/07/18 Javascript
jQuery遍历之next()、nextAll()方法使用实例
2014/11/08 Javascript
基于jquery css3实现点击动画弹出表单源码特效
2015/08/31 Javascript
jquery输入数字随机抽奖特效的简单实现代码
2016/06/10 Javascript
js事件冒泡与事件捕获详解
2017/02/20 Javascript
Bootstrap Scrollspy源码学习
2017/03/02 Javascript
nodejs实现邮件发送服务实例分享
2017/03/29 NodeJs
Vue分页组件实例代码
2017/04/17 Javascript
Angular.Js之Scope作用域的学习教程
2017/04/27 Javascript
微信小程序之绑定点击事件实例详解
2017/07/07 Javascript
vue数据传递--我有特殊的实现技巧
2018/03/20 Javascript
三种Webpack打包方式(小结)
2018/09/19 Javascript
vue移动端城市三级联动组件使用详解
2019/07/26 Javascript
Python给你的头像加上圣诞帽
2018/01/04 Python
Python常见字符串操作函数小结【split()、join()、strip()】
2018/02/02 Python
Python3标准库总结
2019/02/19 Python
使用python将excel数据导入数据库过程详解
2019/08/27 Python
Python Django中间件,中间件函数,全局异常处理操作示例
2019/11/08 Python
澳大利亚最大的女装零售商:Millers
2017/09/10 全球购物
美赞臣营养马来西亚旗舰店:Enfagrow马来西亚
2019/07/26 全球购物
英文自荐信
2013/12/15 职场文书
国庆促销活动总结
2014/08/29 职场文书
2014年销售经理工作总结
2014/12/01 职场文书
企业2014年度工作总结
2014/12/10 职场文书
书法社团活动总结
2015/05/07 职场文书
该怎么书写道歉信?
2019/07/03 职场文书
浅谈JavaScript浅拷贝和深拷贝
2021/11/07 Javascript
详细聊一聊mysql的树形结构存储以及查询
2022/04/05 MySQL