入坑爬坑记

nginx系列

18/5/24 今天是想做一个 在后端上传图片然后把图片存储到服务器,并且把图片地址存入数据库 以便前端的同学调用接口的时候方便调用

然而这个想当然很简单的东西卡了我半天

这个东西坑不是坑在业务流程上,是服务器这个部分把我坑了好久

坑点

1.既然我把图片的地址存入了数据库给前端的同学作为调用,那么这个地址得是可以访问的吧。
但是我用的flask框架 如果想直接通过url来访问 那么就应该在flask里写视图函数来 通过return的方式 得到图片的地址 这就不是我想要的效果了。我想要的是能够直接在url里输入我的服务器里的存放图片的文件夹来取到图片

解决方法

一顿搜索后终于找到解决的方法

在nginx服务器配置里 conf.d里

   server {
       #监听端口
       listen      443;
       #域名可以有多个,用空格隔开
       server_name qunawang.top;
       ssl on;
       ssl_certificate  cert/214438562750086.pem;
       ssl_certificate_key  cert/214438562750086.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;
       root /home/image/;
       #对 "/" 启用反向代理
       *location /image {
          root /home;
          access_log   on;
         autoindex  on;
         }*
        location / {
          #root   html;
          #index  index.html index.htm;
          root root/test/e-newbee;
          proxy_set_header Host $host;
          proxy_set_header X-Real-Ip $remote_addr;
          proxy_set_header X-Forwarded-For $remote_addr;
          proxy_pass http://120.79.154.232:5000;
       }

   }
server {
   listen       80;
   server_name  qunawang.top;
   return      301 https://$server_name$request_uri;
}

这一代码块的意思就是 当访问https://qunawang.top/image/xxx.jpg 时 他会自动的去找我服务器 home/image
但是如果 root 后面跟着的是/home/image的话就获取不到想要的图片了

这是第一个坑点

第二个坑

在flask重定向上的问题,当我把域名配置成https后 如果通过点击事件重定向的跳转 跳转的位置还是原来http的url 无法正常访问

解决方法 查了一遍发现大概是nginx配置或者重定向的问题 这里有个比较好的文档https://jiayi.space/post/flaskde-url_forzhong-ding-xiang-wen-ti-he-xiang-ying-yuan-ma-fen-xi

我的解决方式是

::
server {
listen 80; server_name qunawang.top; return 301 https://$server_name$request_uri;

}

在nginx配置文件里增加了一块代码 把所有发送到http上的请求重定向到https上