duoduoluo_z 发表于 2016-05-24 17:56

线上服务器,原图请求为空。详情请进

内网用浏览器测试是好使的。。。就使这一段代码

#原图的匹配位置
      location ~* /group/M00 {
                root/data/fdfs/data;

                ngx_fastdfs_module;
                echo 我进来了;
      }

浏览器请求,会得到一个白色的小框,空白的
curl***localhost/group2/M00/00/00/ChlaGFdEGNeAfXN0AA4Or239mgA888.jpg
它竟然打印了 “我进来了” 这句话。
这是否以为着 ngx_fastdfs_module 完全被无视了,没有起作用??

------------------------------------------------------------------------------------------------
iptables 设置如下。。。会不会和哪里有关呢》?

*filter
:INPUT ACCEPT
:FORWARD ACCEPT
:OUTPUT ACCEPT
#-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT

-A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 8080 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 3306 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22122 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 23000 -j ACCEPT
-A INPUT -m state --state NEW -m udp -p udp --dport 11211 -j ACCEPT
#-A INPUT -j REJECT --reject-with icmp-host-prohibited
#-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT

------------------------------------------------------------------------------------------------
storage.log 和 tracker.log 就不上了,没有任何错误,只有一些info内容。。。
求助各位,折腾了好久了~~

duoduoluo_z 发表于 2016-05-25 17:33

好像可以排除防火墙以及权限的问题。。
那么有一个困扰许久的问题,像各位请教以下:
就是
location ~* /group/M00 {
                root/data/fdfs/data;

                ngx_fastdfs_module;
                echo 我进来了;
      }

这一段,按我的理解,root 的作用会把上面的url 拼接在 /data/fdfs/data 后面,那就变成了 /data/fdfs/data/group/M00***(这里的group随便取一个)
可是这张图片在server上的路径应该是 /data/fdfs/data/M00***    也就是去掉group 那一块。
但样例都是这么写的。。之前我还以为ngx_fastdfs_module 会对这个做处理,所以group 这块就没想太多。谁知 这个module 根本就不管这个。。
于是我又确认了一下线下的server,确定就是这么写的,而nginx 也确实能找到那张图!但是在线上就不可以,然后我就凌乱了。。
我觉得肯定是哪里理解错了,希望大神帮忙指点迷津!!
包括 root 的作用,以及之后 nginx 会执行什么操作。。。
谢谢~

duoduoluo_z 发表于 2016-05-26 10:48

这个太神奇了!!我把 “echo 我进来了" 那句话注释掉,或者删掉,就没问题了!!

另外收回一句话,刚去做了一下实验,发现ngx_fastdfs_module 这个模块就是用来处理 group* 这个前缀的,余大的文档意思是说,它会在资源同步期间,保证请求落到有资源的storage服务器上,其实对group* 也做了手脚,然后拼在root 后面。这样解释就通了。
并不能看懂源码,所以只能靠尝试。。。
那这个问题的关键为何是 echo 这一句话呢?
echo 是nginx原生模块命令,执行阶段是 content_phase,我想这二者的执行方式可能产生重叠了,如果有echo 命令,这个模块会“失效”。不知道是不是这样,可以请余大解释一下吗?:D)
页: [1]
查看完整版本: 线上服务器,原图请求为空。详情请进