本文简单总结如何在 Nginx 中配置 HTTPS, 并将 HTTP 重定向到 HTTPS。
一、环境说明
系统: CentOS7.6
应用服务器:Nginx 1.16.1、Tomcat 9.0
安全组已开放端口: 22、80、443、3389
二、下载证书(腾讯云)
登录腾讯云,点击控制台下方的个人中心头像。
点击云产品,搜索 SSL证书,点击进入。
点击证书管理,在域名项点击下载,便可得到各应用服务器类型 SSL 证书,解压后的 SSL 证书文件夹如下。
三、SSL 证书部署
在 Nginx 目录下新建 cert 文件夹存放 SSL 证书(注:文件路径由个人决定)
cd /usr/local/nginx
mkdir cert
将 SSL 证书包中 Nginx 两个文件通过 FileZilla 上传到服务器所新建的 cert 目录。
四、配置 Nginx
编辑 /usr/local/nginx/conf/nginx.conf 配置文件,新增 server 项
server {
listen 443 ssl;
# listen 443 ssl http2; # 添加 http2,可将当前代理地址升级为 HTTP2
server_name www.xn--i8s322e.cn; # 域名,多个则以空格分开
ssl_certificate /usr/local/nginx/cert/1_www.xn--i8s322e.cn_bundle.crt; # crt 文件的绝对路径
ssl_certificate_key /usr/local/nginx/cert/2_www.xn--i8s322e.cn.key; # key 文件的绝对路径
ssl_session_cache shared:SSL:1m;
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 /data/wwwroot/default; # 注:正常配置为 html 即可
index index.html index.htm;
}
location /api/v1 { # 此为本人的额外配置,为后端接口的代理
proxy_pass http://127.0.0.1:7001/api/v1;
}
}
将 HTTP 重定向 HTTPS
server {
listen 80;
server_name www.xn--i8s322e.cn;
return 301 https://$server_name$request_uri;
}
五、重启 Nginx
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
或者
service nginx restart
如果 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:3306 0.0.0.0:* LISTEN 4351/mysqld
tcp 0 0 127.0.0.1:11211 0.0.0.0:* LISTEN 3078/memcached
tcp 0 0 127.0.0.1:6379 0.0.0.0:* LISTEN 2957/redis-server 1
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 9096/nginx: master
tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN 2942/pure-ftpd
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 3027/sshd
tcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN 9096/nginx: master
tcp 0 0 127.0.0.1:7773 0.0.0.0:* LISTEN 28167/node
tcp6 0 0 127.0.0.1:8006 :::* LISTEN 3865/java
tcp6 0 0 :::8080 :::* LISTEN 3865/java
tcp6 0 0 :::21 :::* LISTEN 2942/pure-ftpd
tcp6 0 0 :::7001 :::* LISTEN 28160/node
# 结束 80 端口进程
kill 9096;
再次重启 Nginx,即可完成配置。