阿里云+nginx配置https
先在阿里云购买ssl认证
申请完毕以后,下载证书,得到一个压缩包,解压以后得到key和pem为后缀的文件,这个就是用于配置ssl认证的文件。
nginx配置
新建cert文件夹
在nginx.conf的同目录下新建一个文件夹cert,将得到的两个密钥文件(key和pem为后缀的文件)放进去
然后进入nginx.conf配置文件,配置server块。(一般默认nginx安装在/etc/nginx,具体因人而异)
填写配置文件
#从此开始配置80端口
server {
listen 80;
listen [::]:80;
server_name *****.com www.*****.com;
#填写你的域名
location /{
root /usr/share/nginx/html;
location /LostAndFound-admin {
alias /home/www/dist/ ;
#使用alias指定项目位置
try_files $uri $uri/ /LostAndFound-admin/index.html;
#Vue项目(单页面应用)解决路由更换刷新时无法定位首页(404)
index index.html index.htm;
}
# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;
error_page 404 /404.html;
location = /404.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
#从此开始443端口配置https协议
server {
listen 443 ssl;
#配置HTTPS的默认访问端口为443。
#如果未在此处配置HTTPS的默认访问端口,可能会造成Nginx无法启动。
#如果您使用Nginx 1.15.0及以上版本,请使用listen 443 ssl代替listen 443和ssl on。
server_name ******.top www.******.top;
ssl_certificate /etc/nginx/cert/9****482_www.******.top.pem;
ssl_certificate_key /etc/nginx/cert/996****2_www.********.top.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.1 TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
location / {
proxy_pass http://127.0.0.1:3001;#使用反向代理,将请求转到3001端口
proxy_set_header Host $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;
}
}
然后重启nginx服务即可
//重启nginx
systemctl restart nginx.service
但是会报错
Job for nginx.service failed because the control process exited with error code. See "systemctl status nginx.service" and "journalctl -xe" for details.
会不会是自己的编写nginx.conf存在问题
于是执行nginx -t ,来检查配置文件的语法是否正确,但是提示ok和successful,说明没有问题啊。
说又不说清楚,后面查了,看了一眼/run/nginx.pid 原来nginx.pid不存在,合着他重启就是删了这个进程文件再启动呗,系统自己删了以后并没有真的关闭nginx的进程
那我试着执行nginx 或者 nginx -s reload ,然后都告诉我nginx.pid不存在。只能去看日志了
所以可以先打印nginx状态
//运行以下命令来检查nginx服务的状态:
systemctl status nginx.service
//这个命令可以显示nginx服务的状态信息,包括是否正在运行、最近一次启动时间、错误信息等。
//运行以下命令来查看nginx错误日志:
tail -f /var/log/nginx/error.log
//这个命令可以实时查看nginx错误日志,包括错误信息和错误发生的时间
//查看查询nginx的状态和报错日志后明白了是nginx启动使用的80端口被占用
//查询占用80端口的进程,前面加sudo表示管理员执行
netstat -anp | grep :80 sudo netstat -anp | grep :80
//得到占用80端口的进程竟然是 nginx marster /nginx worker,明白了,使用nginx重启命令只是删了
//nginx.pid文件并没有真正停止nginx进程,他依然运行着。
//那么就是先根据上面的nginx进程号 {kill -9 进程号}杀死进程,再次执行nginx启动nginx就好啦
注:问题是几天前解决的,这些是大概过程,一定要不完全正确乃至错误的地方,我只是提供一种思路哦,辩证看待呢
微信小程序https配置
记得在项目的project.config.json文件中配置允许的https域名,不然会报错提示reuqest/uploadFile等合法域名列表不包括 www.****.com
当然我们还需要在微信开发公众平台中 开发者管理>服务器域名信息 中填写合法域名用到哪些写哪些吧