英语不是我的母语,请原谅打字错误。
我按如下方式配置Apache反向代理,它可以正常工作。
ProxyRequests Off
SSLEngine On
SSLProxyEngine On
ProxyPass / https://example.com/
ProxyPassReverse / https://example.com/
而且我的网站(PHP)支持HTTP/2
,所以我想用HTTP/2
代理它。
我启用了mod_proxy
、mod_proxy_http
、mod_ssl
、mod_http2
、mod_proxy_http2
等一些模块,并将.php
的MIME类型设置为application/x-httpd-php
。AddType application/x-httpd-php .php
虚拟主机如下所示:
<VirtualHost *:443>
DocumentRoot "/path/to/wwwroot/"
ServerName localhost:443
ProxyRequests Off
SSLEngine On
SSLProxyEngine On
ProxyPass / h2://example.com/
ProxyPassReverse / https://example.com/
# Cert
SSLCertificateFile ...
SSLCertificateKeyFile ...
</VirtualHost>
差异是ProxyPass / https://example.com/
到ProxyPass / h2://example.com/
。
- 浏览器中的响应标头
Content-Type
始终获取默认MIME类型。**
- 浏览器中的响应标头
您可以在DevTools中的phpMyAdmin Demo、过滤器whitelist.php
中找到示例,该文件Content-Type
为text/javascript
。
由HTTP/2
代理它,Content-Type
变为application/x-httpd-php
,它丢失了源MIME类型text/javascript
。
并用HTTP/1.1
代理它,它工作得很好。
我怎样才能解决这个问题?
谢谢你。
2条答案
按热度按时间mrwjdhj31#
这是一个老问题,但我运行相同的问题,并决定调查。
我找到一个bug in http2 proxy。
它将在下一个
HTTPD
版本(2.4.55)中修复ig9co6j12#
虚拟主机文件配置:
接下来,我们需要启用一些Apache模块。为此,请发出以下命令:
sudo a2enmod代理
sudo a2enmod代理_http
sudo a2enmod代理平衡器
sudo a2enmod lb方法请求
现在需要使用以下命令重新启动Apache:
sudo服务apache2重新启动