Apache通过HTTP/2反向代理将丢失MIME类型并使用默认值

wsxa1bj1  于 2022-12-19  发布在  Apache
关注(0)|答案(2)|浏览(104)

英语不是我的母语,请原谅打字错误。
我按如下方式配置Apache反向代理,它可以正常工作。

ProxyRequests Off
SSLEngine On
SSLProxyEngine On

ProxyPass / https://example.com/
ProxyPassReverse / https://example.com/

而且我的网站(PHP)支持HTTP/2,所以我想用HTTP/2代理它。
我启用了mod_proxymod_proxy_httpmod_sslmod_http2mod_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-Typetext/javascript
HTTP/2代理它,Content-Type变为application/x-httpd-php,它丢失了源MIME类型text/javascript
并用HTTP/1.1代理它,它工作得很好。
我怎样才能解决这个问题?
谢谢你。

mrwjdhj3

mrwjdhj31#

这是一个老问题,但我运行相同的问题,并决定调查。
我找到一个bug in http2 proxy
它将在下一个HTTPD版本(2.4.55)中修复

ig9co6j1

ig9co6j12#

虚拟主机文件配置:

<VirtualHost *:443>
    ServerAdmin admin@test.com
    ServerName example.com
    ServerAlias www.example.com

    ssl_certificate .....
    ssl_certificate_key ..........

  ProxyRequests Off Order deny, allow Allow from all
 <Location />
        ProxyPass http://example.com:8000/
        ProxyPassReverse http://example.com:8000/
    </Location>

</VirtualHost>

接下来,我们需要启用一些Apache模块。为此,请发出以下命令:

sudo a2enmod代理
sudo a2enmod代理_http
sudo a2enmod代理平衡器
sudo a2enmod lb方法请求

现在需要使用以下命令重新启动Apache:

sudo服务apache2重新启动

相关问题