在centos7上用nginx部署https服务

作者: 张阳君 分类: 前端技术

今年在腾讯云上折腾了一台centos入门级服务器,本来想着就搭个lamnp环境,装个wordpress来做个人博客的,但是后来想想,服务器配置太低,用php性能不会太出众,所以最终还是选择了nginx+node的组合。本文主要总结一下如何在centsos7上基于nginx搭建https服务。希望这些小小的经验能给各位一点启发,也希望大家不要把时间浪费在部署运维上,安心写好代码才是正道。

在centos7上搭建nginx

使用源码安装会比较麻烦,操作步骤也相对多一点,我个人推荐通过yum去安装nginx。这里两步就能操作完:

  1. 添加nginx的yum源:
rpm -ivh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
  1. 安装nginx:
yum install -y nginx

cenos7中nginx的操作命令这里也列一下:

// 启动nginx
service nginx start 或 systemctl start nginx.service

// 停止nginx
service nginx stop 或 systemctl stop nginx.service

// 重启nginx
service nginx restart 或 systemctl restart nginx.service 或 nginx -s reload

// nginx开机自启动
systemctl enable nginx.service

// 关闭nginx开机自启动
systemctl disable nginx.service

启动相应端口

由于centos7默认关闭所有对外端口,因此在部署https服务之前,需要开放相应端口。我在部署过程中,被端口问题坑了一把,常规的http服务,开启80端口就可以了,但是https服务还需要开放额外的443端口。

知识点:443端口即网页浏览端口,主要是用于HTTPS服务,是提供加密和通过安全端口传输的另一种HTTP。

综上,我们这里需要开启80和443两个端口,在centos7里依次执行如下命令:

firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --zone=public --add-port=443/tcp --permanent

最后重启防火墙:

firewall-cmd --reload

这样,我们就能在外网看到nginx的启动页面了。

获取ssl证书并配置nginx

我是在腾讯云上获取的ssl证书,目前其他服务商也会提供相应的功能,获取证书的方法以服务商提供的为准。

腾讯云上提供了各种服务器的ssl证书,打开nginx目录,有.key.crt后缀的两个证书文件,我们将这两个文件拷贝到服务器的/etc/nginx/conf.d目录下(注:nginx的配置目录可能会有差异,请根据实际情况调整)。

然后我们修改一下nginx配置文件:

server{
   listen 443;
   server_name 你的域名.com www.你的域名.com;

   ssl on;
   ssl_certificate conf.d/证书名.crt;  #此处的路径相对于配置文件的路径
   ssl_certificate_key conf.d/证书名.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 / { 
     ...
     #一些普通的重定向请写在这里
     rewrite ...
   }

}

server {
   listen 80;
   server_name 你的域名.com www.你的域名.com;
   rewrite ^(.*) https://www.你的域名.com$1 permanent;
}

注意:上面的rewrite是将普通http协议重定向到https,这个比较关键。另外涉及到普通的301重定向,请写在location区块中。

配置完成后,不要忘了重启一下nginx!

结语

整体来说,通过上面三步操作就能在centos7上部署一套https服务了。看上去很简单,实际上我在这里面踩了好几个坑才爬出来。网站用上了https,seo的权重会有相应的提高,网站安全性也得到了保障。不过腾讯云上免费的ssl证书只能用一年,就先这样用着吧。

(全文完)

0 条评论
回复
支持 Markdown 语法
暂无评论,来抢个沙发吧!