我已将我的Apache配置为充当反向代理。现在我想启用http2来加快速度。
Apache已启用模块,Nginx也已启用。
当我输入时
Protocols h2 h2c http/1.1
ProtocolsHonorOrder Off
ProxyPass / h2://192.168.2.100/
ProxyPassReverse / https://192.168.2.100/
进入apache站点配置,Nginx引发400 Bad Request Error。
使用此代码可代替:
Protocols h2 h2c http/1.1
ProtocolsHonorOrder Off
ProxyPass / https://192.168.2.100/
ProxyPassReverse / https://192.168.2.100/
Nginx配置:
listen 443 ssl http2;
我需要如何配置此部分才能正常工作?#
这不是评论,而是答案,但看起来您是新来的,所以也许我可以帮忙(冒着完全错误的危险。)>
我正在将Nginx配置为Apache的反向代理以运行Django应用程序(顺便说一下,我从未听说有人使用Apache作为Nginx的反向代理)。
但是Nginx文档中进行了一些讨论,使我认为甚至不可能:
阅读proxy_pass
上的Nginx文档,他们提到了using websockets for proxying requires a special configuration
在该文档中,它讨论了websocket如何要求HTTP1.1(以及Upgrade
和Connection
HTTP标头),因此,您可以在服务器和代理之间基本构造它们proxy_set_header
,或者如果客户请求包括它们。
大概在这种情况下,如果客户端未发送Upgrade
标头,则您将proxy_pass
使用TCP而不是Websockets与服务器建立连接。
嗯,HTTP2(我假设)是另一个Upgrade
,并且可能会得到更少的用户代理支持。因此,至少,您会冒兼容性问题的风险。
同样,我从未将Apache配置为(反向)代理,但是我从您的配置中猜测,Apache将处理对客户端的加密,然后可能必须重新加密才能连接到Nginx。
仅加密方面的开销很大,可能还有浏览器兼容性问题……而且可能不是很好的设置。
再次,我不确定是否有可能,我是来这里寻找类似答案的,但是您可能需要重新考虑。