英语不是我的母语,请原谅输入错误。
我按如下配置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如下:
<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类型。
您可以在phpMyAdmin Demo中找到示例,在DevTools中过滤whitelist.php
,此文件Content-Type
是text/javascript
。
通过HTTP/2
,Content-Type
对其进行代理
成为application/x-httpd-php
,它将失去源MIME类型text/javascript
。
并通过HTTP/1.1
对其进行代理,效果很好。
我该如何解决这个问题?
谢谢。
答案 0 :(得分:0)
虚拟主机文件配置:
<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 proxy_http
sudo a2enmod proxy_balancer
sudo a2enmod lbmethod_byrequests
现在将需要使用以下命令重新启动Apache:
sudo服务apache2重新启动