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搭建图片服务器的过程详解(root和alias的区别)
Mar 31 Servers
Nginx四层负载均衡的配置指南
Jun 11 Servers
zabbix自定义监控nginx状态实现过程
Nov 01 Servers
Nginx实现负载均衡的项目实践
Mar 18 Servers
详解使用内网穿透工具Ngrok代理本地服务
Mar 31 Servers
Windows Server 2019 安装DHCP服务及相关配置
Apr 28 Servers
windows server 2016 域环境搭建的方法步骤(图文)
Jun 25 Servers
Linux下搭建SFTP服务器的命令详解
Jun 25 Servers
Win2008系统搭建DHCP服务器
Jun 25 Servers
win10搭建配置ftp服务器的方法
Aug 05 Servers
ubuntu开机后ROS程序自启动问题
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 常用字符串函数总结
2008/03/15 PHP
php array_intersect()函数使用代码
2009/01/14 PHP
9个实用的PHP代码片段分享
2015/01/22 PHP
Zend Framework框架之Zend_Mail实现发送Email邮件验证功能及解决标题乱码的方法
2016/03/21 PHP
joomla组件开发入门教程
2016/05/04 PHP
Laravel框架使用monolog_mysql实现将系统日志信息保存到mysql数据库的方法
2018/08/16 PHP
使javascript也能包含文件
2006/10/26 Javascript
写入cookie的JavaScript代码库 cookieLibrary.js
2009/10/24 Javascript
Javascript数组的排序 sort()方法和reverse()方法
2012/06/04 Javascript
jQuery对下拉框,单选框,多选框的操作
2014/02/21 Javascript
JavaScript function 的 length 属性使用介绍
2014/09/15 Javascript
jquery中map函数遍历数组用法实例
2015/05/18 Javascript
JavaScript动态检验密码强度的实现方法
2016/11/09 Javascript
JavaScript定时器制作弹窗小广告
2017/02/05 Javascript
详解Angular.js指令中scope类型的几种特殊情况
2017/02/21 Javascript
详解Vue2 SSR 缓存 Api 数据
2017/11/20 Javascript
js打开word文档预览操作示例【不是下载】
2019/05/23 Javascript
jquery图片预览插件实现方法详解
2019/07/18 jQuery
jQuery列表动态增加和删除的实现方法
2020/11/05 jQuery
[20:46]Ti4循环赛第三日VG vs DK
2014/07/12 DOTA
[43:32]Winstrike vs VGJ.S 2018国际邀请赛淘汰赛BO3 第一场 8.23
2018/08/24 DOTA
python getpass实现密文实例详解
2019/09/24 Python
使用pyshp包进行shapefile文件修改的例子
2019/12/06 Python
python 多维高斯分布数据生成方式
2019/12/09 Python
python logging.basicConfig不生效的原因及解决
2020/02/20 Python
pyqt5数据库使用详细教程(打包解决方案)
2020/03/25 Python
Python Pandas 对列/行进行选择,增加,删除操作
2020/05/17 Python
css3翻牌翻数字的示例代码
2020/02/07 HTML / CSS
浅谈pc和移动端的响应式的使用
2019/01/03 HTML / CSS
财产公证书
2014/04/10 职场文书
给校长的建议书200字
2014/05/16 职场文书
2014老师三严三实对照检查材料思想汇报
2014/09/18 职场文书
逃课打麻将检讨书
2014/10/05 职场文书
机关保密工作承诺书
2015/05/04 职场文书
跳高加油稿
2015/07/21 职场文书
2016党校学习心得体会
2016/01/07 职场文书