为什么要使用 HTTPS ?
首先来说一下 HTTP 与 HTTPS 协议的区别吧,他们的根本区别就是 HTTPS 在 HTTP 协议的基础上加入了 SSL 层,在传输层对网络连接进行加密。简单点说在 HTTP 协议下你的网站是光着身子在奔跑,但到了 HTTPS 下你穿了一件衣服,别人看不到你的肌肉了(当然,这好像不是好事,不重要),更安全了一点点,就大概这个意思。 SSL 依靠证书来验证服务器的身份,并为浏览器和服务器之间的通信加密。采用 HTTPS 的服务器必须从证书颁发机构 CA(Certificate Authority)申请一个用于证明服务器用途类型的证书,当然一般都有收费,而且不便宜,其实你也可以通过
OpenSSL 自己造一个证书,这样有一个弊端是大家都不信任你造的证书。那怎么办?
你必须知道的步骤
通过上面的简单介绍你应该知道了,要想你的网站支持 HTTPS ,就必须有一个被信任的证书,那这个证书就必须由证书颁发机构(如VeriSign、Microsoft等)颁发的,否则你就会遇到如打开 12306.cn 这样的您的连接不是私密连接
的尴尬。
你肯定不想用户打开后,你的网站是上面这样的,身边有好多朋友买票时问过我这是什么意思?我都没办法解释给他们,哎。所以你需要要有下面几个东西:
- 一个域名(你肯定有)
- Web 服务器(Nginx,Apache,IIS都行)
- SSL 证书(最好 CA 机构颁发的)
就完了,上面三个东西可能最麻烦就是搞到一个被全世界都信任的证书了,没关系,现在我试着让你免费获取一个,注意是免费!!!
提供免费的证书商也就那么几个,最知名的可能是 StartSSL ,其他我还知道 Let's Encrypt ,不过这里我用的是国内腾讯云的。
感谢腾讯云
对于得到一个受信任的证书
很简单,找第三方证书颁发机构购买就行了,但是一个每年大几千的证书费用对于小企业或个人来说,有点接受不了,或者是没钱。现在好了,腾讯云认证用户可以申请到赛门铁克(Symantec)免费的 TrustAsia DV SSL 证书了。
登录腾讯云管理平台
SSL 证书申请地址在这里: https://console.qcloud.com/ssl,点击申请证书
,会弹出下面的框:
上面显示什么价值1900元/年
,不要管,点击确认
按钮。弹出表单你填写你要绑定的域名就行了:
接下来会验证你的域名,简单说就是验证一下这个域名是不是你的,所以你要在域名解析添加一条 CName 记录,实在不懂的话,官方也有怎么添加的文档。
一般验证过程会很快,几个小时吧,申请通过后,这时候你看到状态是已颁发
后,就能下载证书了。
下载下来你打开文件会看到Nginx,Apache,IIS
三个文件夹,里边放的就是对应各个服务器的证书。到这里,整个证书申请流程就算完了,接下来就是配置 Web 服务器来支持网站的 HTTPS 访问了。我这里用的 Nginx 演示。
Nginx 平滑升级以支持 HTTPS
要想让 Web服务器支持 HTTPS ,首先你的服务器肯定要支持 SSL ,所以我们先检查 Nginx 是否支持 SSL :
/usr/local/nginx/sbin/nginx -V
通过命令显示信息,我们看configure arguments
中是否有-with-http_ssl_module
字样,如果像我这样没有的话,你就需要重新编译 Nginx 以支持 SSL 了。如果有,请跳过这步骤,直接看Nginx 配置 HTTPS 服务
那一节。
安装 Nginx 可能大家都会,不会的可以看 从零开始学 Java - CentOS 下安装 Nginx,但是平滑升级 Nginx 可能你没有体验过,这样说吧,在线上服务器环境下,你要支持 HTTPS 访问,但是你发现你的 Nginx 不支持 SSL ,你肯定不能卸载 Nginx 重新安装时加载 SSL 模块,因为那是线上服务器。你只能在现有安装的 Nginx 下进行无痛升级以以支持 SSL ,这就用到了 Nginx 的平滑升级
概念。
找到你之前安装 Nginx 时的编译目录,如果你和我一样找不到或许删除了,那我们就需要重新下载一个 Nginx 了,当然我们是通过wget
方式,看命令:
wget -c https://nginx.org/download/nginx-1.10.1.tar.gz tar -zxvf nginx-1.10.1.tar.gz cd nginx-1.10.1
配置,加入 SSL 模块:
./configure --with-http_ssl_module make
注意,千万不能在像安装的时候make install
了,因为我们这是升级。
备份原 Nginx 执行脚本
mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.old
把新版本 Nginx 编译脚本放到可执行文件目录下
cd objs/ cp nginx /usr/local/nginx/sbin/
进行平滑升级,命令:
make upgrade
这时候会输出这些信息:
/usr/local/nginx/sbin/nginx -t nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful kill -USR2 `cat /usr/local/nginx/logs/nginx.pid` sleep 1 test -f /usr/local/nginx/logs/nginx.pid.oldbin kill -QUIT `cat /usr/local/nginx/logs/nginx.pid.oldbin`
没问题之后接下来,查看现在目前版本及安装模块:
/usr/local/nginx/sbin/nginx -V
看到已经从 1.4.6 版本升级到了 1.10.1,而且这种升级不影响正常访问的。线上环境操作也是可以的。
Nginx 配置 HTTPS 服务
编辑配置文件:
cd /usr/local/nginx/conf vim nginx.conf
拉到最下面,会看到 HTTPS 配置被注释掉了。嗯,这是模板,我们就在这配置。
文字版:
server { listen 443 ssl; server_name www.domain.com; ssl on; ssl_certificate 1_www.domain.com_bundle.crt; ssl_certificate_key 2_www.domain.com.key; ssl_session_timeout 5m; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE; ssl_prefer_server_ciphers on; location / { root html; index index.html index.htm; } }
把上面的ssl_certificate
和ssl_certificate_key
替换成你下载下来的证书存放路径就行,记着下载下来的证书这种配置是放在/usr/local/nginx/conf
目录下的,当然你也可以随意放。
这时候,你就可以打开浏览器访问一下试试了。正常情况 HTTPS 请求是打不开的,因为我们还没设置防火墙,记得要开放443
端口!,嗯,设置过防火墙就可以正常访问了吧。
其实到这里,这个服务器支持 HTTPS 请求流程已经结束了,但是你发现好多人在浏览器地址栏输入域名的时候都不输入http://
或https://
的,因为浏览器会自动帮我们加上http://
的,所以,这时候输入我们刚刚设置的域名其实还是没有走https://
请求,那怎么让就是输入http://
也走HTTPS
呢?
很简单,Nginx 中这样配置就行啦!
server { listen 80; server_name www.domain.com; rewrite ^(.*)$ https://$host$1 permanent; }
我们利用rewrite
来做跳转。监听到80
端口的 HTTP 请求后,就转发到 HTTPS ,当然还有好多处理方式。
这篇文章讲了一下怎么申请免费的 HTTPS 证书,然后利用 Nginx 服务器来配置 HTTPS 请求访问,并其中顺手平滑升级 Nginx,如丝般顺滑的升级,不影响正常访问。HTTPS 方式的传输对我们网站来说应该是提高了一些安全性的,况且这种方式又很简单,可以试着搞一搞。
分享到:
相关推荐
本文将指导你如何平滑升级 Nginx 版本,确保服务器保持高性能和高可用性。LNMP 介绍、Linux 操作系统、Nginx Web 服务器、MySQL/MariaDB 数据库服务器和 PHP/Python/Perl 等开发语言的相关知识点如下: LNMP 介绍 ...
对于Web服务器软件Nginx来说,平滑升级是确保服务不中断且能够安全地应用最新功能和安全修复的关键过程。本篇内容主要围绕如何在CentOS 7系统上,将Nginx 1.12.2平滑升级至1.13.3版本进行讲解。 首先,要确认当前...
nginx平滑升级,不停止在线应用,支持升级到1.2.4版本
本篇文章将详细介绍两种在CentOS7上升级Nginx的方法:YUM upgrade和源码平滑升级,并提供相关的步骤和注意事项。 ### YUM upgrade 升级 YUM upgrade适用于已经使用RPM方式安装Nginx的用户。这种升级方式简单快捷,...
### CentOS 7 下 Nginx 从 1.12 版本平滑升级到 1.14 的详细步骤 #### 一、背景介绍 Nginx 是一款广泛使用的高性能 HTTP 和反向代理 Web 服务器,同时也提供 IMAP/POP3/SMTP 服务。在 CentOS 7 上通过源码安装的 ...
为了解决上述安全问题,建议通过平滑升级的方式将当前的Nginx版本从1.18.0升级到1.20.2。 #### 平滑升级的概念 平滑升级是指在不中断现有业务的前提下,对正在运行的Nginx版本进行升级。这种方式可以避免升级过程...
在本文中,我们将详细探讨如何进行Nginx 1.8.0版本到1.9.7版本的平滑升级过程。平滑升级是确保Web服务器在不中断服务的情况下更新软件的重要方法,这对于保持系统安全性和性能至关重要。 首先,确认当前运行的Nginx...
本文将介绍如何在nginx编译安装后进行平滑升级。 平滑升级指的是在服务器运行中,不需要停机,即可完成软件的升级过程,这样可以减少因升级带来的服务中断时间,提升用户体验。 在进行nginx的平滑升级前,我们需要...
"Nginx热升级流程,看这篇就够了" 详解了Nginx的平滑升级过程,无需中断服务即可完成版本更新。这涉及主进程与工作进程的关系,以及如何安全地替换配置文件和二进制文件。 7. **Nginx的多功能性** "除了负载均衡...
2. **热更新与平滑升级**:理解Nginx的平滑升级过程,避免服务中断。 通过本教程的学习,你将能够熟练掌握Nginx的基本操作和高级特性,无论是搭建个人博客还是企业级应用,Nginx都能成为你强大的后盾。不断实践和...
主进程主要任务包括加载配置文件、管理工作进程以及实现平滑升级。工作进程则处理实际的网络请求,如HTTP服务、HTTP代理和FastCGI代理。Nginx利用事件驱动模型,如Linux下的epoll,FreeBSD下的kqueue,Solaris下的/...
平滑升级是指在不中断服务的情况下更新Nginx版本。通常的做法是在新版本启动后,将旧版本的连接转移到新版本上,然后关闭旧版本。 以上内容为第一章的部分知识点总结,后续章节将深入探讨Nginx的高级配置与优化、与...
Nginx还支持基于名称和IP的虚拟主机,可以定制访问日志,支持平滑升级。另外,Nginx支持keep-alive,这是HTTP/1.1中的一个特性,可以让客户端和服务器端保持长时间的连接,减少TCP握手的开销,从而提高性能。 Nginx...
* USR2:平滑升级可执行文件 * WINCH:优雅关闭工作进程 配置文件 Nginx 的配置文件主要包括以下几个部分: * worker_processes:设置工作进程的数量 * Event:配置连接的特性 * http:配置 HTTP 服务器的主要段 ...
13. **热部署与平滑升级** Nginx支持热部署,可以在不停止服务的情况下更新配置或软件版本,确保服务的连续性。 14. **FastCGI支持** Nginx与FastCGI配合,可以处理PHP、Perl、Python等动态语言的请求,实现动静...
在生产环境中,应遵循平滑升级策略,避免服务中断。 总之,"nginx-1.9.14.rar"提供了在Windows环境下学习和使用Nginx的良好起点。通过实践配置和管理,你可以深入了解Nginx的工作原理,提升Web服务部署和运维能力。
- `USR2`:平滑升级到新的二进制版本,保留原有状态。 - `QUIT`:优雅地关闭所有工作进程。 例如,使用`kill`命令发送信号: ```bash kill -s HUP nginx主进程PID # 重新加载配置 kill -s QUIT nginx主进程PID # ...
同时,Nginx的“安静”升级功能可以实现平滑升级,确保在升级过程中不中断服务。 Nginx还经常与Tomcat结合使用,利用Nginx作为反向代理服务器,可以将Web请求转发到后端的Tomcat服务器。通过这种方式可以有效地实现...
Nginx支持在线热更新配置,无需中断服务即可更新配置,同时平滑重启功能确保在升级或修复时不会导致服务中断。 综上所述,Nginx 1.8.0版本提供了全面的Web服务器和反向代理功能,适用于各种规模的网站和应用。下载...