建议优先参考:
Nginx 安装 SSL 配置 HTTPS 超详细完整教程全过程-阿里云开发者社区 (aliyun.com)
在CentOS系统Tomcat 8.5或9上部署SSL证书 (aliyun.com)
个人笔记:
1.1. 准备SSL证书
进入当前Nginx运行目录,创建cert目录存放证书:
cd /usr/local/nginx/conf #需确认为实际运行的nginx配置文件夹
mkdir cert
将证书及秘钥文件复制到该文件夹
可用pwd确认当前路径
举例: /usr/local/nginx/nginx-1.22.0/conf/cert
1.2. 开通443端口(或指定的其他https端口)
设置并保存防火墙配置:
iptables -I INPUT -p tcp --dport 443 -j ACCEPT
service iptables save
重启防火墙:
service iptables restart
检查端口开通情况:
netstat -tunlp
查看占用端口的程序和进程:
lsof -i :443
杀掉占用端口的进程(须先确认):
kill -9 进程id
1.3. 修改nginx配置
进入当前nginx运行目录下的conf文件夹
修改前先备份:
cp nginx.conf nginx-bak.conf
编辑nginx.conf配置文件
vim nginx.conf
打开配置文件后按i进入编辑模式:
将所有HTTP请求通过rewrite指令重定向到HTTPS:
server {
listen 80;
server_name yourdomain; #需要将yourdomain替换成证书绑定的域名。
rewrite ^(.*)$ https://$host$1; #将所有HTTP请求通过rewrite指令重定向到HTTPS。
location / {
index index.html index.htm;
}
}
设置https模块配置:
server {
listen 443 ssl;
#配置HTTPS的默认访问端口为443(或根据网络拓扑确认实际应使用的端口)。
#如果未在此处配置HTTPS的默认访问端口,可能会造成Nginx无法启动。
#如果您使用Nginx 1.15.0及以上版本,请使用listen 443 ssl代替listen 443和ssl on。
server_name www.hitagi.cn;
root html;
index index.html index.htm;
ssl_certificate cert/xxx.pem; #替换证书文件名称
ssl_certificate_key cert/xxx.key; #替换秘钥文件名称
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
#表示使用的加密套件的类型。
ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3; #表示使用的TLS协议的类型,您需要自行评估是否配置TLSv1.1协议。
ssl_prefer_server_ciphers on;
location / {
root html; #Web网站程序存放目录。
proxy_pass http://127.0.0.1:8080;
index index.html index.htm;
}
}
编辑完成后按esc退出编辑模式。
保存并关闭文件:
:wq
检查当前运行的nginx版本是否包含ssl模块(在nginx的sbin目录下执行如已配置环境变量可忽略):
./nginx -V
如果返回结果中不包含 “--with-http_ssl_module”则需添加模块并重新编译nginx程序。
在运行的nginx下sbin文件夹备份nginx程序:
cp nginx nginx-bak
在nginx安装包文件夹内使用修改后的配置:
./configure --with-http_ssl_module #(需添加原有模块)
编译:
make
请勿使用编译并安装!
# make install
停止运行中的nginx服务:
./nginx -s stop
将安装包文件夹中编译后生成的新nginx程序复制到到原运行中的目录替换:
cp 安装包目录/sbin/nginx 实际运行目录/sbin/nginx
进入运行目录的sbin,测试配置文件是否正确:
./nginx -t -c /usr/local/nginx/conf/nginx.conf
启动Nginx:
./nginx
查看是否启动成功
ps -ef | grep nginx
附:Nginx重载配置并启动命令:
./nginx -s reload
评论区