前言
项目的访问首页,原来做的是http访问,现在要https也能访问。看似好像就添加个“s”,实际上搞起来还是费点事。大概2年前买了云服务器的时候,做过类的的,但那个时候是云服务器,证书什么的厂家提供,再加上时间也过去很久,很多东西都忘了。
OpenSSL生成证书
公司这边当时提供了cfssl的证书生成文档,但官网不好找,用linux下载安装包还特别慢。好不容易下载上,对服务器证书签名又出现问题。无奈之下最后改用OpenSSL,因为搜寻b站找资料,看到有up主用到这个工具,讲的还不错。就改用这个。算是踩坑了吧。
下载OpenSSL
https://slproweb.com/products.html 这是官网下载地址, 有linux和win两个版本,我下载的win版本
安装OpenSSL
windows安装直接无脑默认下一步,我的默认安装路径是(C:\Program Files\OpenSSL-Win64\bin)
在Win生成证书
在OpenSSL默认路径bin目录下cmd,输入以下命令,c盘dev文件夹生成对应文件
//生成私钥.key
openssl genrsa -des3 -out c:/dev/server.key
//由私钥创建待签名证书
openssl.exe req -new -key c:/dev/server.key -out c:/dev/pub.csr
创建一个CA机构
//生成CA私钥
openssl.exe genrsa -out c:/dev/myca.key 2048
//生成CA代签名证书
openssl.exe req -new -key c:/dev/myca.key -out c:/dev/myca.csr
//生成CA根证书
openssl.exe x509 -req -in c:/dev/myca.csr -extensions v3_ca -signkey c:/dev/myca.key -out c:/dev/myca.crt
//对服务器证书签名
openssl x509 -days 365 -req -in c:/dev/pub.csr -extensions v3_req -CAkey c:/dev/myca.key -CA c:/dev/myca.crt -CAcreateserial -out c:/dev/server.crt
参考资料:
Nginx配置
在nginx配置文件:nginx.conf加入下面配置
# https 服务配置
server {
listen 443 default ssl;
ssl on;
ssl_certificate /opt/cert/server.crt;
ssl_certificate_key /opt/cert/server.key;
server_name localhost;
location / {
root /usr/local/nginx/html/dist;
try_files $uri $uri/ /index.html;
index index.html index.htm;
}
location /prod-api/ {
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://localhost:8080/;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
添加SSL支持
https://blog.csdn.net/H900302/article/details/120825981
这篇博客讲的细节很到位!
查日志看出问题
但在这里有一个很恶心的bug,那就是上面配置文件没有问题,但报错nginx访问404,notfound。然后我就一直百度,反复改配置文件的内容,一直以为配置文件出问题,改了配置文件很多地方没有解决。直到最后查了一下nginx的error.log日志文件,发现访问路径似曾相识。”/home/ruoyi/projects/static-web/index.html”,这个路径不是和ruoyi官网默认的路径很相似?于是按照网站的操作:通过make模板进行编译,新的nginx文件覆盖旧的文件,然后重启奇迹出现,访问成功!这里覆盖旧文件的底层原理我不清楚,但真的坑啊。
2024/03/24 21:25:08 [error] 17506#0: *371 "/home/ruoyi/projects/static-web/index.html" is not found (2: No such file or directory), client: 192.168.10.212, server: localhost, request: "GET / HTTP/1.1", host: "192.168.10.195"
2024/03/24 21:32:54 [error] 17506#0: *375 "/home/ruoyi/projects/static-web/index.html" is not found (2: No such file or directory), client: 192.168.10.212, server: localhost, request: "GET / HTTP/1.1", host: "192.168.10.195"
2024/03/24 21:37:50 [error] 17506#0: *381 "/home/ruoyi/projects/static-web/index.html" is not found (2: No such file or directory), client: 192.168.10.212, server: localhost, request: "GET / HTTP/1.1", host: "192.168.10.195"
参考资料:
总结
这次这个问题解决起来也是花了些时间,但还好最终解决,要不然心情就比较沮丧了。