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的rewrite模块详解
Mar 31 Servers
nginx如何将http访问的网站改成https访问
Mar 31 Servers
Nginx服务器添加Systemd自定义服务过程解析
Mar 31 Servers
nginx搭建图片服务器的过程详解(root和alias的区别)
Mar 31 Servers
fastdfs+nginx集群搭建的实现
Mar 31 Servers
Linux下使用C语言代码搭建一个简单的HTTP服务器
Apr 13 Servers
阿里云ECS云服务器快照的概念以及如何使用
Apr 21 Servers
Nginx 安装SSL证书完成HTTPS部署
Apr 28 Servers
centos7安装mysql5.7经验记录
May 02 Servers
Nginx 常用配置
May 15 Servers
Nginx报404错误的详细解决方法
Jul 23 Servers
nginx访问报403错误的几种情况详解
Jul 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
谈一谈收音机的高放电路
2021/03/02 无线电
dedecms系统的广告设置代码 基础版本
2010/04/09 PHP
深入php之规范编程命名小结
2013/05/15 PHP
Yaf框架封装的MySQL数据库操作示例
2019/03/06 PHP
JavaScript 撑出页面文字换行
2009/06/15 Javascript
Javascript string 扩展库代码
2010/04/09 Javascript
JS截取字符串常用方法详细整理
2013/10/28 Javascript
eclipse导入jquery包后报错的解决方法
2014/02/17 Javascript
JavaScript中判断页面关闭、页面刷新的实现代码
2014/08/27 Javascript
node.js中的console.timeEnd方法使用说明
2014/12/09 Javascript
javascript数组输出的两种方式
2015/01/13 Javascript
直接拿来用的15个jQuery代码片段
2015/09/23 Javascript
js模仿java的Map集合详解
2016/01/06 Javascript
通过vue-router懒加载解决首次加载时资源过多导致的速度缓慢问题
2018/04/08 Javascript
Vue路由切换时的左滑和右滑效果示例
2018/05/29 Javascript
解决JavaScript layui 下拉框不显示的问题
2018/08/14 Javascript
vue绑定事件后获取绑定事件中的this方法
2018/09/15 Javascript
新手必须知的Node.js 4个JavaScript基本概念
2018/09/16 Javascript
JavaScript中的回调函数实例讲解
2019/01/27 Javascript
细述Javascript的加法运算符的具体使用
2019/10/18 Javascript
小程序怎样让wx.navigateBack更好用的方法实现
2019/11/01 Javascript
vue打包静态资源后显示空白及static文件路径报错的解决
2020/09/02 Javascript
Python中的CURL PycURL使用例子
2014/06/01 Python
Python获取服务器信息的最简单实现方法
2015/03/05 Python
pyqt5自定义信号实例解析
2018/01/31 Python
示例详解Python3 or Python2 两者之间的差异
2018/08/23 Python
深入学习python多线程与GIL
2019/08/26 Python
python Pillow图像处理方法汇总
2019/10/16 Python
查看端口并杀进程python脚本代码
2019/12/17 Python
pycharm如何使用anaconda中的各种包(操作步骤)
2020/07/31 Python
html标签之Object和EMBED标签详解
2013/07/04 HTML / CSS
上海天奕面试题笔试题
2015/04/19 面试题
销售人员职业生涯规划范文
2014/03/01 职场文书
2014大学生职业生涯规划书最新范文
2014/09/13 职场文书
Java并发编程必备之Future机制
2021/06/30 Java/Android
对讲机的最大通讯距离是多少
2022/02/18 无线电