升级https就不细讲了,我的思路是用nginx修改配置文件即可。怎么修改可以按照你购买的域名公司自带的教程执行。我是使用阿里云购买的域名,通过备案后申请个人免费的ssl证书,下载nginx的证书和密钥,上传到nginx和nginx.conf的文件夹下,然后修改Nginx的配置文件即可。具体按照下面来。
后来升级https后,网页端可以访问,且使用专业的检测工具测试,网站的安全等级为a+级别,发现微信小程序中还是post失败,报错ssl_err。
经检查,jar包使用docker部署在8090端口,正常访问你的域名https://www.xxxxx.xyz的话应该是默认443端口,但我微信小程序此时请求的是
https://www.xxxxx.xyz:8090/uploadimg的格式,此时8090应该是接不到https请求的。
正确的请求应该是https://www.xxxxx.xyz/uploadimg
所以应该利用Nginx反向代理,将/uploading请求直接转发到8090端口即可。也就是在nginx.conf文件的http模块里的https的server模块里添加location动态代理。直接转发到服务器自己的8090端口,http://localhost:8090/uploadImg;的位置。
这样微信小程序不需要考虑后续转发8090端口的问题,微信小程序客户端只知道自己请求的是一个安全级别很高的https网站。
贴一下我的整个nginx.conf文件,记得修改server_name为自己的服务器地址
########### 每个指令必须有分号结束。################# #user administrator administrators; #配置用户或者组,默认为nobody nobody。 #worker_processes 2; #允许生成的进程数 #pid /nginx/pid/nginx.pid; #指定nginx进程运行文件存放地址 error_log log/error.log debug; #制定日志路径,级别。这个设置可以放入全局块,http块,server块,级别以此为:debug|info|notice|warn|error|crit|alert|emerg events { accept_mutex on; #设置网路连接序列化,防止惊群现象发生,默认为on multi_accept on; #设置一个进程是否同时接受多个网络连接,默认为off #use epoll; #事件驱动模型,select|poll|kqueue|epoll|resig|/dev/poll|eventport worker_connections 1024; #最大连接数 } http { include mime.types; default_type application/octet-stream; log_format myFormat '$remote_addr–$remote_user [$time_local] $request $status $body_bytes_sent $http_referer $http_user_agent $http_x_forwarded_for'; access_log log/access.log myFormat; sendfile on; keepalive_timeout 20; server { listen 80; server_name xxxxxxx; return 301 https://$host$request_uri; } server { listen 443 ssl; server_name xxxxxxxx; ssl_certificate /usr/local/nginx/conf/cert/www.grpusz.xyz.pem; ssl_certificate_key /usr/local/nginx/conf/cert/www.grpusz.xyz.key; # 启用的协议 ssl_protocols TLSv1.2 TLSv1.3; # 优先使用强加密套件(FS系列) ssl_ciphers 'EECDH+AESGCM:EECDH+CHACHA20:EDH+AESGCM:AES256+EECDH:AES256+EDH'; ssl_prefer_server_ciphers on; # 其他 SSL 设置 ssl_session_cache shared:SSL:10m; ssl_session_timeout 10m; ssl_session_tickets off; add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always; # CORS 设置 add_header Access-Control-Allow-Origin *; add_header Access-Control-Allow-Methods 'GET, POST, OPTIONS'; add_header Access-Control-Allow-Headers 'Content-Type, Authorization'; # 服务器位置 location / { root /usr/picture; try_files $uri $uri/ =404; } #反向代理到其他端口,我的业务需要传大文件,所以设了50mb的size,你们可以删除 location /uploadImg { proxy_pass http://localhost:8090/uploadImg; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; client_max_body_size 50M; } error_page 404 /404.html; location = /404.html { root /usr/picture; internal; } } }