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 proxy_cache 缓存配置详解
Mar 31 Servers
Windows下使用Nginx+Tomcat做负载均衡的完整步骤
Mar 31 Servers
Nginx工作原理和优化总结。
Apr 02 Servers
解析在浏览器地址栏输入一个URL后发生了什么
Jun 21 Servers
使用goaccess分析nginx日志的详细方法
Jul 09 Servers
了解Kubernetes中的Service和Endpoint
Apr 01 Servers
Nginx限流和黑名单配置
May 20 Servers
windows系统安装配置nginx环境
Jun 28 Servers
nginx之queue的具体使用
Jun 28 Servers
Nginx如何配置根据路径转发详解
Jul 23 Servers
win7配置本地ftp服务器的图文教程
Aug 05 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
php $_SERVER[&quot;REQUEST_URI&quot;]获取值的通用解决方法
2010/06/21 PHP
PHP中register_globals参数为OFF和ON的区别(register_globals 使用详解)
2012/02/05 PHP
php中的boolean(布尔)类型详解
2013/10/28 PHP
php的ajax简单实例
2014/02/27 PHP
美图秀秀web开放平台--PHP流式上传和表单上传示例分享
2014/06/22 PHP
记录几个javascript有关的小细节
2007/04/02 Javascript
javascript中检测变量的类型的代码
2010/12/28 Javascript
基于jquery的cookie的用法
2011/01/10 Javascript
javascript获取ckeditor编辑器的值(实现代码)
2013/11/18 Javascript
javaScript array(数组)使用字符串作为数组下标的方法
2013/11/19 Javascript
JS获取随机数函数可自定义最小值最大值
2014/05/08 Javascript
JavaScript中判断页面关闭、页面刷新的实现代码
2014/08/27 Javascript
js实现编辑div节点名称的方法
2014/12/17 Javascript
Node.js的包详细介绍
2015/01/14 Javascript
常用的JavaScript模板引擎介绍
2015/02/28 Javascript
jQuery+Ajax实现用户名重名实时检测
2017/06/01 jQuery
js学习心得_一个简单的动画库封装tween.js
2017/07/14 Javascript
深入理解angular2启动项目步骤
2017/07/15 Javascript
基于js中this和event 的区别(详解)
2017/10/24 Javascript
react-native 圆弧拖动进度条实现的示例代码
2018/04/12 Javascript
学习使用ExpressJS 4.0中的新Router的用法
2018/11/06 Javascript
Vue CLI3基础学习之pages构建多页应用
2019/06/02 Javascript
JS实现简易留言板(节点操作)
2020/03/16 Javascript
python调用java的Webservice示例
2014/03/10 Python
python爬虫入门教程之糗百图片爬虫代码分享
2014/09/02 Python
OpenCV+Python识别车牌和字符分割的实现
2019/01/31 Python
python 调试冷知识(小结)
2019/11/11 Python
tensorflow的ckpt及pb模型持久化方式及转化详解
2020/02/12 Python
Python基于pandas爬取网页表格数据
2020/05/11 Python
sort命令的作用和用法
2013/08/25 面试题
建筑工程技术应届生求职信
2013/11/17 职场文书
九年级历史教学反思
2014/01/27 职场文书
2015年公司后勤管理工作总结
2015/05/13 职场文书
聚众斗殴罪辩护词
2015/05/21 职场文书
学前教育见习总结
2015/06/23 职场文书
女性励志书籍推荐
2019/08/19 职场文书