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本地目录映射实现代码实例
Mar 31 Servers
Nginx反向代理配置的全过程记录
Jun 22 Servers
OpenStack虚拟机快照和增量备份实现方法
Apr 04 Servers
CentOS下安装Jenkins的完整步骤
Apr 07 Servers
Nginx+Tomcat负载均衡多实例详解
Apr 11 Servers
解决Windows Server2012 R2 无法安装 .NET Framework 3.5
Apr 29 Servers
tomcat默认最大连接数及相关调整方法
May 06 Servers
openEuler 搭建java开发环境的详细过程
Jun 10 Servers
Python安装及建立虚拟环境的完整步骤
Jun 25 Servers
nginx访问报403错误的几种情况详解
Jul 23 Servers
SpringBoot前端后端分离之Nginx服务器下载安装过程
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
php5.3 废弃函数小结
2010/05/16 PHP
php中http_build_query 的一个问题
2012/03/25 PHP
thinkphp5框架路由原理与用法详解
2020/02/11 PHP
网页禁用右键实现代码(JavaScript代码)
2009/10/29 Javascript
解析使用JS 清空File控件的路径值
2013/07/08 Javascript
javascript中声明函数的方法及调用函数的返回值
2014/07/22 Javascript
根据当前时间在jsp页面上显示上午或下午
2014/08/18 Javascript
jquery.validate 自定义验证方法及validate相关参数
2016/01/18 Javascript
JS获取年月日时分秒的方法分析
2016/11/28 Javascript
关于meta viewport中target-densitydpi属性详解(推荐)
2017/08/18 Javascript
详解从零搭建 vue2 vue-router2 webpack3 工程
2017/11/22 Javascript
javaScript字符串工具类StringUtils详解
2017/12/08 Javascript
详解Angular系列之变化检测(Change Detection)
2018/02/26 Javascript
对vue2.0中.vue文件页面跳转之.$router.push的用法详解
2018/08/24 Javascript
vue-cli3全面配置详解
2018/11/14 Javascript
小程序自定义日历效果
2018/12/29 Javascript
基于elementUI实现图片预览组件的示例代码
2019/03/31 Javascript
Vue使用lodop实现打印小结
2019/07/06 Javascript
vue excel上传预览和table内容下载到excel文件中
2019/12/10 Javascript
[53:20]2018DOTA2亚洲邀请赛 4.1 小组赛 A组加赛 VG vs OG
2018/04/03 DOTA
在Python中使用判断语句和循环的教程
2015/04/25 Python
python字符串常用方法
2018/06/14 Python
python实现监控某个服务 服务崩溃即发送邮件报告
2018/06/21 Python
Python+Django+MySQL实现基于Web版的增删改查的示例代码
2020/05/13 Python
keras多显卡训练方式
2020/06/10 Python
如何在Canvas中添加事件的方法示例
2019/05/21 HTML / CSS
StubHub墨西哥:购买和出售您的门票
2016/09/17 全球购物
27个经典Linux面试题及答案,你知道几个?
2013/01/10 面试题
公共机构节能宣传周活动总结
2014/07/09 职场文书
村长党的群众路线教育实践活动个人对照检查材料
2014/09/23 职场文书
音乐教师个人总结
2015/02/06 职场文书
2015年仓管员工作总结
2015/04/21 职场文书
跑出一片天观后感
2015/06/08 职场文书
公司晚宴祝酒词
2015/08/11 职场文书
小学生一年级(书信作文)
2019/08/13 职场文书
CSS 一行代码实现头像与国旗的融合
2021/10/24 HTML / CSS