Обратный прокси-сервер Apache по HTTP / 2 потеряет MIME-тип и будет использовать по умолчанию - PullRequest
0 голосов
/ 08 мая 2019

Английский не мой родной язык, извините за ошибки при печати. ​​

Я настраиваю обратный прокси-сервер 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 , фильтр whitelist.php в DevTools, этот файл Content-Type равен text/javascript.

Прокси это HTTP/2, Content-Type стать application/x-httpd-php, потерял источник MIME-типа text/javascript.

И прокси его по HTTP/1.1, он хорошо работает.

Как я могу решить эту проблему?

Спасибо.

1 Ответ

0 голосов
/ 08 мая 2019

Конфигурация файла виртуального хоста:

  <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 proxy

sudo a2enmod proxy_http

sudo a2enmod proxy_balancer

sudo a2enmod lbmethod_byrequests

Теперь необходимо перезапустить Apache с помощью команды:

sudo service apache2 restart

...