鱿鱼url_rewrite_program。标准输入总是空的。无法使用 wgets 解析鱿鱼消息

Squid url_rewrite_program. stdin always empty. Unable to parse squid msg with wgets

我正在尝试通过 squid.conf 将请求从 Squid 重定向到我的应用程序(用 C 编写):

http_port 3128
# some default configuration out of the box
url_rewrite_program /cygdrive/c/app.exe /cygdrive/c/app.conf
url_rewrite_children 1 startup=1 idle=1

应用程序运行正常。但是 stdin 永远不会被 Squid 填充(通过设置 InternetProps -> Connections -> Lan settings Proxy connection settings localhost:3128)。 wgets (stdio.h) 命令不会读取任何数据。

根据 squid access.log 的说法,url 被称为: 1555677518.894 44096 ::1 TCP_TUNNEL/200 39 连接 www.google.com.ua:443 - HIER_DIRECT/172.217.16.3 -

这是我正在使用的代码:

int main(int argc, char* argv[]) {
  char str[1000]
  while(1) {
    if (fgets(str, 100, stdin)!=NULL) {
      // do smth
    }
    // wait millis
  }
}

如果手动调用应用程序并在 stdin 中写入 smth 工作正常。 我使用的是用 Cygwin 构建的 Squid 3.5.28,也尝试过 2.7 稳定版,但结果相同。

发现一个旧的 post 有类似的问题,但没有解决:Squid url_rewrite_program

提前致谢!

答案是在这里找到的: https://serverfault.com/questions/937515/how-to-set-up-url-rewriting-under-squid-3-5-on-windows-10 空输出的原因是 Cygwin 如何模拟 Cygwin 二进制文件(squid)和本机 Windows 二进制文件之间的管道。 将 OS 更改为 Unix (Debian) 并重新编译应用程序。工作正常:)