centos-nginx-https

2,691 阅读3分钟

准备过程

首先,你需要一个服务器,我自己用的是阿里云的ECS服务器,选择的是CentOS 7.6 64位,用学生认证的话能用优惠的价格买到。 然后,还需要准备一个免费的SSL证书,这个也可以在阿里云直接购买

步骤参考如下: 在证书购买完成之后,进进入管理控制台,选择购买好的证书,点击申请: 申请完成后可能会有审核,在审核结束之后点击下载:

这样你就得到了用于ssl的.key文件和.pem文件,接下来需要将它们上传到你的服务器中。

scp -r test.key yourusername@yourserverip:/etc/ssl/private/

tips:

1)scp是命令,-r是参数

2)test.key 是文件的路径和文件名

3)yourusername是服务器账号

4)yourserverip是要上传的服务器ip地址

5)/etc/ssl/private/是要拷入的文件夹路径

这样证书就准备好啦,然后开始安装和配置Nginx。 我们使用yum来安装Nginx。

Yum是一个在Fedora和RedHat以及CentOS中的Shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包。

具体安装过程可以参考技术胖的【前端必会的 Nginx入门视频教程】,因为他写的非常详细,我就不赘述啦

开始配置Https

1、确保你成功安装Nginx并能正常访问http://www. {{ yourdomain }} .com

2、确保你的ECS服务器的安全组中有配置443端口

3、在命令行中使用vim /etc/nginx/conf.d/*.conf打开Nginx的配置文件,并在底部添加以下代码【带{{ }} 的部分请自行替换】:

server {
   listen 443 ssl;
   server_name www.{{ yourdomain }}.com;

   root html;
   index index.html index.htm;

   gzip on;
   gzip_types text/plain application/javascript text/css;

   ssl_certificate   /etc/ssl/private/{{ yourFileName }}.pem;
   ssl_certificate_key  /etc/ssl/private/{{ yourFileName }}.key;

   ssl_session_timeout 5m;
   ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
   ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
   ssl_prefer_server_ciphers on;
   location / {
       root   /usr/share/nginx/html;
       index  index.html index.htm;
   }
}

4、添加完成并保存退出之后,使用nginx -t测试一下,如果出现一下提示就表示配置没有问题

5、重启一下nginx -s reload或者systemctl restart nginx.service,使配置生效,然后我们查看一下端口的监听情况

可以看到80端口和443端口都在监听中了

6、此时如果直接去访问https://yourdomain的话可能会发现无法连接,于是我们就去防火墙中打开443端口:

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

然后重启一下防火墙:

firewall-cmd --reload

在操作成功之后,命令行窗口中均会有sussess的提示。

7、此时再去访问,就会发现可以访问页面了。我们接下来的需求是每次在访问http开头的页面时自动重定向至https开头的页面,只需要在Nginx的配置文件中修改一下

在监听80端口的server配置中,添加以下代码rewrite ^(.*)$ https://$host$1 permanent;

修改完成后保存并退出vim,再重启一下Nginx即可生效,此时去访问http开头的页面就会自动重定向。

有疑问的请在下方留言哈~