http升级https的一些坑(Nginx)
程序员文章站
2022-05-01 09:39:05
...
获取证书
升级到https第一步就是获取一张证书。
阿里云有免费的SSL证书(据说可以一个账号可以申请20个?)
然后申请步骤跳过。。。
申请完成大概就是酱紫的
点击下载进入到证书下载页面
证书放好
修改配置
官方默认给的配置如下
server {
listen 443;
server_name localhost;
ssl on;
root html;
index index.html index.htm;
ssl_certificate cert/214970146320352.pem;
ssl_certificate_key cert/214970146320352.key;
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
location / {
root html;
index index.html index.htm;
}
}
根据配置进行更改如下
upstream employers {
server 127.0.0.1:8882 fail_timeout=0;
}
upstream platforms {
server 127.0.0.1:8880 fail_timeout=0;
}
server {
listen 80;
server_name test.*****.com;
return 301 https://test.*****.com;
}
server {
#listen 80;
listen 443;
#listen 8880;
server_name localhost;
ssl on;
root /mnt/mobile;
index index.html index.htm;
ssl_certificate cert/214970146320352.pem;
ssl_certificate_key cert/214970146320352.key;
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
#解决vue刷新404问题
location / {
try_files $uri $uri/ @router;
index index.html;
}
location @router {
rewrite ^.*$ /index.html last;
}
location /employer/ {
proxy_pass http://employers;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
}
location /platform/ {
proxy_pass http://platforms;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
}
}
修改完成后记得重启nginx以启用配置(nginx -s reload)
监听80端口使得http强制跳转了https
配置完成之后记得在服务器中开启443端口,开始没有开启443一直不通还郁闷了半天
由于前端使用了vue进行开发 所以在页面进行刷新的时候 会出现404异常
网上查了下 说是由于vue为单页面访问所有资源路径 页面就只有一个(一般为index.html)
所以在不改变url的情况下响应index.html资源的内容需要加上如下配置
#解决vue刷新404问题
location / {
try_files $uri $uri/ @router;
index index.html;
}
location @router {
rewrite ^.*$ /index.html last;
}
然后基本ok!
但网上说配置以后对应微信支付会有影响 因为微信回调走的是http,这个目前还没有测试!待测试完补充。。。
升级https之后 微信浏览器支付需要将 微信支付授权目录更改为相应的https开头的路径,调起支付时的路径跳转也应该是对应的https路径