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 被动检查服务器的存活状态
Oct 16 Servers
详解nginx location指令
Jan 18 Servers
nginx刷新页面出现404解决方案(亲测有效)
Mar 18 Servers
Dashboard管理Kubernetes集群与API访问配置
Apr 01 Servers
为Centos安装指定版本的Docker
Apr 01 Servers
zabbix配置nginx监控的实现
May 25 Servers
如何让你的Nginx支持分布式追踪详解
Jul 07 Servers
Docker安装MySql8并远程访问的实现
Jul 07 Servers
Nginx如何获取自定义请求header头和URL参数详解
Jul 23 Servers
Shell中的单中括号和双中括号的用法详解
Dec 24 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执行速度全攻略(下)
2006/10/09 PHP
php图片加水印原理(超简单的实例代码)
2013/01/18 PHP
浅析is_writable的php实现
2013/06/18 PHP
js数据验证集合、js email验证、js url验证、js长度验证、js数字验证等简单封装
2010/05/15 Javascript
js 设置选中行的样式的实现代码
2010/05/24 Javascript
jquery简单实现鼠标经过导航条改变背景图
2013/12/17 Javascript
js中的for如何实现foreach中的遍历
2014/05/31 Javascript
angularJS提交表单(form)
2015/02/09 Javascript
JavaScript通过function定义对象并给对象添加toString()方法实例分析
2015/03/23 Javascript
Jquery跨域获得Json的简单实例
2016/05/18 Javascript
Node.js的进程管理的深入理解
2019/01/09 Javascript
详解微信小程序实现跑马灯效果(附完整代码)
2019/04/29 Javascript
解决IOS端微信H5页面软键盘弹起后页面下方留白的问题
2019/06/05 Javascript
Vue中父子组件的值传递与方法传递
2020/09/28 Javascript
django连接mysql数据库及建表操作实例详解
2019/12/10 Python
使用 pytorch 创建神经网络拟合sin函数的实现
2020/02/24 Python
如何在scrapy中集成selenium爬取网页的方法
2020/11/18 Python
Html5剪切板功能的实现代码
2018/06/29 HTML / CSS
详解移动端Html5页面中1px边框的几种解决方法
2018/07/24 HTML / CSS
澳大利亚领先的睡衣品牌:Peter Alexander
2016/08/16 全球购物
美国猫狗药物和用品网站:PetCareRx
2017/01/05 全球购物
Three Graces London官网:英国奢侈品牌
2021/03/18 全球购物
说说你所熟悉或听说过的j2ee中的几种常用模式?及对设计模式的一些看法
2012/05/24 面试题
局域网标准
2016/09/10 面试题
如何安装ruby on rails
2014/02/09 面试题
大堂副理的岗位职责范文
2014/02/17 职场文书
美术教学感言
2014/02/22 职场文书
银行竞聘演讲稿范文
2014/04/23 职场文书
银行求职信范文
2014/05/26 职场文书
单位实习工作证明怎么写
2014/11/02 职场文书
2016年大学生实习单位评语
2015/12/01 职场文书
2016党校培训心得体会
2016/01/07 职场文书
如何让2019年上半年的工作总结更出色!
2019/07/01 职场文书
创业计划之特色精品店
2019/08/12 职场文书
如何在centos上使用yum安装rabbitmq-server
2021/03/31 Servers
MySQL 数据库范式化设计理论
2022/04/22 MySQL