Laziness, Impatience and Hubris.

利用nghttpx 搭建HTTP/2代理

预计 4 分钟

利用nghttpx 搭建HTTP/2代理,配合了Squid.Squid相关配置可以参考在Debian上搭建适用于Surge的HTTPS代理

先安装必要的依赖

apt-get install \
    g++ \
    make \
    binutils \
    autoconf \
    automake \
    autotools-dev \
    libtool \
    pkg-config \
    zlib1g-dev \
    libcunit1-dev \
    libssl-dev \
    libxml2-dev \
    libev-dev \
    libevent-dev \
    libjansson-dev \
    libjemalloc-dev \
    cython \
    python3-dev \
    python-setuptools

源码编译nghttpx,并将文件拷贝到对应目录

git clone https://github.com/nghttp2/nghttp2.git
cd nghttp2
autoreconf -i
automake
autoconf
./configure
make
make install
echo lib > /etc/ld.so.conf.d/nghttp2.conf
ldconfig

cd contrib
cp nghttpx-init /etc/init.d/nghttpx
cp nghttpx.service /lib/systemd/system/

创建nghttpx配置

mkdir /etc/nghttpx
cd /etc/nghttpx
vi nghttpx.conf

配置模板

frontend=0.0.0.0,9999 # nghttpx端口
backend=127.0.0.1,3128 # 对应的squid端口
private-key-file=path/to/your/key
certificate-file=path/to/your/cert
http2-proxy=yes

workers=4
# 不添加 X-Forwarded-For 头
add-x-forwarded-for=no
# 不添加 Via 头
no-via=yes
# 不查询 OCSP
no-ocsp=yes
# NPN / ALPN 优先使用 h2
#npn-list=h2
tls-min-proto-version=TLSv1.2
tls-max-proto-version=TLSv1.2
ciphers=ECDHE+AES128

重启nghttpx

service nghttpx start