nginx http转https (前后台分离项目 vue+springboot)
注:好记性不如烂笔头
项目已经搞完了,部署在nginx上,不过是http的。现在需要转为https。其实和一开始搭建https没啥区别,(唯一区别就在你之前创建的nginx可能不支持ssl,这里需要下载SSL模块覆盖之前的)
1下载SSL证书,可以通过阿里云下载,有免费版,但只支持一年,每年要定期更新。记得下载nginx的,下载解压后会有.pem,和.key两个文件
我这里拿的是客户购买的证书 pfx格式的,还需要转成pem文件才能使用。
可以到https://www.itrus.cn/service_caChange.html这个网站去转,
源证书密码需要有,没有的话问客户要, 目标私钥密码可以不填写,转换后解压文件,会有 server.pem,和server.key两个文件。
有了证书之后,记得将它上传至服务器,我这里上传到
/usr/local/nginx/cert 文件夹下,cert目录是自己创建的
2.nginx安装SSL模块
查看nginx原有的模块
/usr/local/nginx/sbin/nginx -v
在configure arguments:后面显示的原有的configure参数如下:
--prefix=/opt/software/nginx --with-http_stub_status_module
编译SSL模块
切换到源码包
cd /usr/local/nginx-1.14.1
编译ssl模块
./configure --prefix=/opt/software/nginx --with-http_stub_status_module --with-http_ssl_module
运行上面的命令即可,等配置完
配置完成后,运行命令
make
这里千万不要 make install哦。
备份Nginx
然后备份原有已安装好的nginx
cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak
覆盖Nginx
这个时候nginx要停止状态:
查看进程,找到 nginx master的进程。
ps -ef |grep nginx
关闭 nginx master 进程,注意修改下面pid的参数。
kill -QUIT [nginx master pid]
然后将刚刚编译好的 Nginx 覆盖掉原有的 Nginx
cp ./objs/nginx /usr/local/nginx/sbin/
测试
然后启动 nginx,仍可以通过命令查看是否已经加入成功。
cd /usr/local/nginx
启动
./sbin/nginx
查看安装模块
/opt/software/nginx/sbin/nginx -v
3.配置nginx.conf
打开你的usr/local/conf/nginx.conf文件
server {
listen 443 ssl;
#域名/主域名和二级域名都行
server_name www.baidu.com;
#证书存放地址
ssl_certificate /usr/local/nginx/cert/server.pem;
ssl_certificate_key /usr/local/nginx/cert/server.key;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
ssl_prefer_server_ciphers on;
#这里是后台接口请求地址,
location /api {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-Proto https;
proxy_redirect off;
proxy_connect_timeout 240;
proxy_send_timeout 240;
proxy_read_timeout 240;
# note, there is not SSL here! plain HTTP is used
proxy_pass http://127.0.0.1:8868/lw-tender; #接口地址
}
#存放文件地址
location /data {
alias /var/www/html/file/;
autoindex on;
}
#存放绝对路径静态资源地址
location /page/ {
alias /var/www/html/file/;
autoindex on;
}
#域名访问的vue项目地址
location / {
root /var/www/html/dist/;
index index.html index.htm;
}
}
配置完成后记得重启
/usr/local/nginx/sbin/nginx -s reload
4.vue项目更改一下你的接口访问路径