我正在使用NGINX来调用另一个apache / PHP服务。以下是我的NGINX代码,
location /hello {
content_by_lua_block {
res = ngx.location.capture("/forward2");
ngx.say("status: " .. res.status);
ngx.say("result: " .. res.body);
}
}
location /forward2{
proxy_pass http://127.0.0.1:2002/index2.php;
}
我有一个非常简单的PHP代码,
<?php
echo "123456789";
echo "123456789";
echo "123456789";
echo "123456789";
echo "123456789";
echo "123456789";
我的问题是我超过了php sctpt超过65个字符的输出字符数量我得到的是身体的奇怪输出
status: 200 result: ‹30426153·°4Ò,@£)AÈ
如果我在PHP代码中输出字符较少,那么我得到正确的输出如下,(以下情况下只有三个php回显线)
status: 200 result: 0123456789012345678901234567890123456789
你知道为什么会这样吗?
注意:如果我直接访问php(不是通过NGINX),我总是得到任意数量字符的正确输出。
答案 0 :(得分:0)
我在这个问题上挣扎了很多天。但最后我自己找到了解决方案。这里的问题很简单,它与PHP / apache有关。
如果超过60个字符,那么Apache将自动使用gzip编码。所以我不能只回显来自nginx服务器的输出。必须有办法在NGINX服务器中处理这个问题。但是现在我只是使用以下代码行从PHP中禁用了gzip编码。
apache_setenv('no-gzip', '1');