今天聊一下如何在nginx中配置https前端
在web应用开发中,为保证前端访问后端服务器的安全,须要使用https链接,如今来聊一下如何在nginx中配置https.python
1.首先须要申请ssl证书。 在阿里云,腾讯云,华为云等云服务提供商的网站通常都会有免费ssl证书,申请一个便可;下面以华为云为例;
2.下载证书,会获得server.key和server.crt两个文件;在与nginx.conf同目录下建立ssl文件夹(名字任意), 把这两个证书放入刚建立的文件夹中;
3.在nginx.conf的server中增长以下配置:nginx
server { listen 443; server_name www.test.com # 域名 ssl on; # 启用ssl功能 ssl_certificate ssl/server.crt; ssl_certificate_key ssl/server.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; ... }
在配置443端口以前,须要先打开防火墙和443端口,以Centos7为例:web
1) 开启防火墙: systemctl start firewalld 查看防火墙状态: systemctl status firewalld 2) 查看开通了哪些端口: firewall-cmd --list-ports 3) 开通443端口: firewall-cmd --zone=public --add-port=443/tcp --permanent 4) 从新加载下防火墙配置: firewall-cmd --reload 注意: 若是还有其它应用在运行,开启防火墙后,须要开通相应的端口,不然不能访问。
4.80端口重定向至443端口的配置,在nginx.conf的server上面增长以下的server:后端
server { listen 80; server_name www.test.com; rewrite ^(.*)$ https://www.test.com$1 permanent; }
5.验证配置是否正确:
执行 /usr/sbin/nginx -t
返回以下信息则表示配置成功:安全
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
6.重启nginx服务器
systemctl restart nginx
最后推荐廖雪峰老师的在nginx中配置https的例子: nginx中配置httpssession