1. 首页 > 快讯

Nginx配置问题导致FastDFS无法访问?

https://github.com/sunshinelyz/mykit-delay

写在前面

文章已收录到:https://gitee.com/binghe001/technology-binghe 和 https://github.com/sunshinelyz/technology-binghe 小伙伴们别忘记给我 Star 呦!!

问题重现

  1. upstream file { 
  2.     server 192.168.175.110:80 max_fails=3; 
  3.  
  4. server { 
  5.     listen       80; 
  6.     server_name  192.168.175.101; 
  7.      location / { 
  8.   root   html; 
  9.   index  index.html index.htm; 
  10.   #允许cros跨域访问  
  11.   add_header 'Access-Control-Allow-Origin' '*'
  12.   #proxy_redirect default
  13.   #跟代理服务器连接的超时时间,必须留意这个time out
  14.   proxy_connect_timeout 10; 
  15.      } 
  16.      
  17.    location ~/file { 
  18.  add_header 'Access-Control-Allow-Origin' '*'
  19.  add_header 'Access-Control-Allow-Credentials' 'true'
  20.  proxy_pass                  http://file; 
  21.  proxy_set_header Host $host:$server_port; 
  22.    } 

我在192.168.175.110服务器上配置的Ngin如下所示。

  1. server { 
  2.  listen       80; 
  3.  server_name  192.168.175.110; 
  4.  #charset koi8-r; 
  5.  #access_log  logs/host.access.log  main; 
  6.  location / { 
  7.      root   html; 
  8.      index  index.html index.htm; 
  9.      #允许cros跨域访问  
  10.      add_header 'Access-Control-Allow-Origin' '*'
  11.      #proxy_redirect default
  12.      #跟代理服务器连接的超时时间,必须留意这个time out
  13.      proxy_connect_timeout 10; 
  14.  }   
  15.  location ~/group([0-9]){ 
  16.   root /data/fastdfs/storage/data; 
  17.   ngx_fastdfs_module; 
  18.  } 

其实,问题的定位也比较简单,就是前端访问时多加了一个file前缀。那么,我们该如何解决这个问题呢?

问题解决

既然定位到问题了,那我们下一步就是要解决这个问题。思路也比较简单,就是在192.168.175.101服务器上接收到请求时将file前缀去掉。那如何去掉呢?

其实也很简单,只需要在192.168.175.101服务器上的Nginx上添加如下配置。

  1. location ^~/file/ { 
  2.  proxy_set_header Host $host; 
  3.  proxy_set_header  X-Real-IP        $remote_addr; 
  4.  proxy_set_header  X-Forwarded-For  $proxy_add_x_forwarded_for; 
  5.  proxy_set_header X-NginX-Proxy true
  6.  proxy_pass http://file/; 

此时,192.168.175.101服务器上的Nginx配置如下所示。

  1. upstream file { 
  2.     server 192.168.175.110:80 max_fails=3; 
  3.  
  4. server { 
  5.     listen       80; 
  6.     server_name  192.168.175.101; 
  7.      location / { 
  8.   root   html; 
  9.   index  index.html index.htm; 
  10.   #允许cros跨域访问  
  11.   add_header 'Access-Control-Allow-Origin' '*'
  12.   #proxy_redirect default
  13.   #跟代理服务器连接的超时时间,必须留意这个time out
  14.   proxy_connect_timeout 10; 
  15.      } 
  16.      
  17.       location ^~/file/ { 
  18.         proxy_set_header Host $host; 
  19.         proxy_set_header  X-Real-IP        $remote_addr; 
  20.         proxy_set_header  X-Forwarded-For  $proxy_add_x_forwarded_for; 
  21.         proxy_set_header X-NginX-Proxy true
  22.         proxy_pass http://file/; 
  23.     } 

知识扩展

nginx反向代理配置如何去除前缀?

方法一:加"/"

  1. upstream pay { 
  2.   server localhost:8089 weight=5; 
  3. upstream order { 
  4.   server localhost:8090 weight=5; 
  5. server { 
  6.     listen              80; 
  7.     server_name         binghe.com; 
  8.  
  9.     location ^~/pay/ { 
  10.         proxy_set_header Host $host; 
  11.         proxy_set_header  X-Real-IP        $remote_addr; 
  12.         proxy_set_header  X-Forwarded-For  $proxy_add_x_forwarded_for; 
  13.         proxy_set_header X-NginX-Proxy true
  14.  
  15.         proxy_pass http://pay/; 
  16.     } 
  17.  
  18.     location ^~/order/ { 
  19.         proxy_set_header Host $host; 
  20.         proxy_set_header  X-Real-IP        $remote_addr; 
  21.         proxy_set_header  X-Forwarded-For  $proxy_add_x_forwarded_for; 
  22.         proxy_set_header X-NginX-Proxy true
  23.  
  24.         proxy_pass http://order/; 
  25.     } 

^~/pay/表示匹配前缀是pay的请求,proxy_pass的结尾有/, 则会把/pay/*后面的路径直接拼接到后面,即移除pay。

方法二:rewrite

  1. upstream pay { 
  2.   server localhost:8089 weight=5; 
  3. upstream order { 
  4.   server localhost:8090 weight=5; 
  5.  
  6. server { 
  7.     listen              80; 
  8.     server_name  binghe.com; 
  9.  
  10.     location ^~/pay/ { 
  11.         proxy_set_header Host $host; 
  12.         proxy_set_header  X-Real-IP        $remote_addr; 
  13.         proxy_set_header  X-Forwarded-For  $proxy_add_x_forwarded_for; 
  14.         proxy_set_header X-NginX-Proxy true
  15.  
  16.         rewrite ^/user/(.*)$ /$1 break; 
  17.         proxy_pass http://pay; 
  18.     } 
  19.  
  20.     location ^~/order/ { 
  21.         proxy_set_header Host $host; 
  22.         proxy_set_header  X-Real-IP        $remote_addr; 
  23.         proxy_set_header  X-Forwarded-For  $proxy_add_x_forwarded_for; 
  24.         proxy_set_header X-NginX-Proxy true
  25.  
  26.         rewrite ^/order/(.*)$ /$1 break; 
  27.         proxy_pass http://order
  28.     } 

 

文章分享结束,Nginx配置问题导致FastDFS无法访问?和的答案你都知道了吗?欢迎再次光临本站哦!

用户评论

眼角有泪°

唉,又遇到Nginx的问题了,我记得FastDFS是用的HTTP协议吧?

    有5位网友表示赞同!

志平

这个标题听着有点吓人,到底是什么情况啊?

    有5位网友表示赞同!

景忧丶枫涩帘淞幕雨

平时不太接触这些技术,不知道具体问题是怎么产生的。

    有7位网友表示赞同!

Hello爱情风

Nginx配置搞出问题,确实让人头疼,快修复吧!

    有16位网友表示赞同!

沐晴つ

还有人在用FastDFS吗?最近主流的似乎都是其他方案了。

    有5位网友表示赞同!

此生一诺

51CTO的博客文章挺多的,这篇文章估计是技术交流的那种。

    有15位网友表示赞同!

等量代换

如果是配置问题的话,应该可以查阅文档或者论坛求助吧?

    有13位网友表示赞同!

你很爱吃凉皮

Nginx和FastDFS哪个更适合做文件存储呢?有人比较过吗?

    有12位网友表示赞同!

娇眉恨

这个标题感觉像是吐槽的语气,作者是不是遇到了什么难题?

    有18位网友表示赞同!

闲肆

如果遇到问题,找专业的人帮忙解决最靠谱!

    有12位网友表示赞同!

?娘子汉

看来Nginx配置确实需要花时间去学习和实践。

    有16位网友表示赞同!

暮染轻纱

"都是"两个字把责任都摆在了Nginx身上,哈哈,真幽默!

    有5位网友表示赞同!

反正是我

技术问题总会有,关键在于如何解决,不要被困难吓倒!

    有12位网友表示赞同!

心脏偷懒

这篇文章应该会在一些技术社区引起共鸣吧?

    有9位网友表示赞同!

作业是老师的私生子

学习一下Nginx的配置方法,以后遇到类似问题就能自己处理。

    有6位网友表示赞同!

孤单*无名指

文章里会不会有具体的解决方案啊?求详细步骤的帮助!

    有11位网友表示赞同!

优雅的叶子

感觉标题说的有点耸动,真实情况可能不太一样呢?

    有12位网友表示赞同!

﹎℡默默的爱

这种技术博客文章分享还挺好用的,可以让大家相互学习进步。

    有18位网友表示赞同!

一尾流莺

51CTO的文章质量怎么说呢?你们觉得怎么样?

    有18位网友表示赞同!

杰克

希望这篇文章能够帮助到遇到相同问题的同学!

    有12位网友表示赞同!

本文采摘于网络,不代表本站立场,转载联系作者并注明出处:https://www.iotsj.com//kuaixun/7120.html

联系我们

在线咨询:点击这里给我发消息

微信号:666666