起因是想用h2代理了,但golang上h2支持还很差,两个spdy库折腾了一晚上都没办法很好的支持CONNECT语义,只好退而求其次用nghttp方案。

2017-11-06更新:为了编译出一个静态链接的版本,需要自己编译依赖,因为cygwin中带的库都没有静态链接的版本。

先按这里把FD_SETSIZE调大,否则会经常出现莫名其妙的连接不上的问题。

编译主要这里,注意文档中提示的几个点。编译参数和顺序可以参照这个脚本

而编译nghttp时则有两个小坑其中一个问题已修正,同时提交的一个PR也合并了;另一个则是需要注意设置</p>

export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig

防止找不到依赖。

编译时在新的g++ 6.x上可能遇到报错,需要按这里修改CFLAGS。

编译后配置文件可以为

frontend=127.0.0.1,8080
backend=xxxx.com,443
client-proxy=yes
add-x-forwarded-for=no
no-via=yes
no-ocsp=yes
npn-list=h2
insecure=yes
workers=4

注意文件要保存成Unix换行符,否则在shrpx里会提示Port is invalid