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 比 Apache 更牛逼
Mar 31 Servers
nginx如何将http访问的网站改成https访问
Mar 31 Servers
nginx简单配置多个server的方法
Mar 31 Servers
图文详解Nginx版本平滑升级方案
Sep 15 Servers
使用Nginx搭载rtmp直播服务器的方法
Oct 16 Servers
Nginx工作模式及代理配置的使用细节
Mar 21 Servers
Nginx反向代理、重定向
Apr 13 Servers
Windows和Linux上部署Golang并运行程序
Apr 22 Servers
Windows Server 2019 安装DHCP服务及相关配置
Apr 28 Servers
win server2012 r2服务器共享文件夹如何设置
Jun 21 Servers
Linux中sftp常用命令整理
Jun 28 Servers
服务器nginx权限被拒绝解决案例
Sep 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
php的计数器程序
2006/10/09 PHP
php的控制语句
2006/10/09 PHP
PHP实现把MySQL数据库导出为.sql文件实例(仿PHPMyadmin导出功能)
2014/05/10 PHP
PHP错误机制知识汇总
2016/03/24 PHP
PHP图片加水印实现方法
2016/05/06 PHP
PHP基于imagick扩展实现合成图片的两种方法【附imagick扩展下载】
2017/11/14 PHP
可兼容php5与php7的cURL文件上传功能实例分析
2018/05/11 PHP
PHP手机短信验证码实现流程详解
2018/05/17 PHP
PHP从零开始打造自己的MVC框架之类的自动加载实现方法详解
2019/06/03 PHP
javascript之解决IE下不渲染的bug
2007/06/29 Javascript
html文件中jquery与velocity变量中的$冲突的解决方法
2013/11/01 Javascript
js 模式窗口(模式对话框和非模式对话框)的使用介绍
2014/07/17 Javascript
jQuery+AJAX实现网页无刷新上传
2015/02/22 Javascript
javascript创建cookie、读取cookie
2016/03/31 Javascript
JS中常用的输出方式(五种)
2016/06/12 Javascript
利用node.js如何搭建一个简易的即时响应服务器
2017/05/28 Javascript
JavaScript使用Ajax上传文件的示例代码
2017/08/10 Javascript
C#程序员入门学习微信小程序的笔记
2019/03/05 Javascript
史上最为详细的javascript继承(推荐)
2019/05/18 Javascript
js实现双人五子棋小游戏
2020/05/28 Javascript
如何利用JavaScript编写一个格斗小游戏
2021/01/06 Javascript
[46:48]DOTA2上海特级锦标赛A组小组赛#2 Secret VS CDEC第三局
2016/02/25 DOTA
[01:02:26]DOTA2-DPC中国联赛 正赛 SAG vs RNG BO3 第二场 1月18日
2021/03/11 DOTA
浅析Python多线程下的变量问题
2015/04/28 Python
Python 网络爬虫--关于简单的模拟登录实例讲解
2018/06/01 Python
ubuntu16.04制作vim和python3的开发环境
2018/09/23 Python
python中取绝对值简单方法总结
2020/07/24 Python
GitHub上值得推荐的8个python 项目
2020/10/30 Python
10个顶级Python实用库推荐
2021/03/04 Python
波兰在线香水店:Perfumy.pl
2019/08/12 全球购物
任命书怎么写
2014/06/04 职场文书
2014镇副书记群众路线专题民主生活会思想汇报
2014/09/23 职场文书
常务副县长“三严三实”对照检查材料思想汇报
2014/10/05 职场文书
2014年保育员个人工作总结
2014/12/02 职场文书
2016年第二十五次全国助残日活动总结
2016/04/01 职场文书
创业计划书之o2o水果店
2019/08/30 职场文书