带有Apache反向代理http2的NGINX Web服务器

时间:2020-05-20 10:18:11

标签: apache nginx proxy reverse

我已将我的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;

我需要如何配置此部分才能正常工作?#

1 个答案:

答案 0 :(得分:0)

这不是评论,而是答案,但看起来您是新来的,所以也许我可以帮忙(冒着完全错误的危险)。

我正在将Nginx配置为Apache的反向代理以运行Django应用程序(顺便说一下,我从未听说有人使用Apache作为Nginx的反向代理)。

但是Nginx文档中有一些讨论,使我认为这甚至是不可能的:

通读proxy_pass上的Nginx文档,他们提到using websockets for proxying requires a special configuration的方式

在该文档中,它讨论了websocket如何要求HTTP1.1(以及UpgradeConnection HTTP标头),因此您可以在服务器和代理之间基本构造proxy_set_header或您可以在客户请求中将它们传递给他们。

大概在这种情况下,如果客户端未发送Upgrade标头,则您将proxy_pass使用TCP而不是websockets与服务器建立连接。

嗯,HTTP2(我假设)是另外一个Upgrade,并且可能会得到更少的用户代理支持。因此,至少,您会冒兼容性问题的风险。

同样,我从未将Apache配置为(反向)代理,但是从您的配置中我猜测,Apache将处理对客户端的加密,然后可能必须重新加密才能连接到Nginx。

仅加密方面的开销很大,可能还有浏览器兼容性问题……而且可能不是一个很好的设置。

同样,我不确定是否有可能,我是来这里寻找类似答案的,但是您可能需要重新考虑。