Назад | Перейти на главную страницу

Apache proxypass не получает ожидаемый контент

Пытались настроить прокси-сервер apache для обслуживания всего содержимого в подкаталоге с нового сервера приложений.

Если я использую это правило перезаписи, оно работает, и меня перенаправляют на новый сайт.

RewriteRule ^/blog/(.+)/$ "https://master-7rqtwti-i7feq5lebr6se.eu-2.platformsh.site/blog/$1" [R,L]

Поэтому я попытался изменить это на директиву прокси:

RewriteRule ^/blog/(.+)/$ "https://master-7rqtwti-i7feq5lebr6se.eu-2.platformsh.site/blog/$1" [P,L]
ProxyPassReverse "/blog/" "https://master-7rqtwti-i7feq5lebr6se.eu-2.platformsh.site/blog/"

Не сработало.
Решил попробовать настроить его как proxypass в блоке локации:

<Location "/blog/">
  SSLProxyEngine on
  ProxyPreserveHost on
  ProxyPass "https://master-7rqtwti-i7feq5lebr6se.eu-2.platformsh.site/blog/"
  ProxyPassReverse  "https://master-7rqtwti-i7feq5lebr6se.eu-2.platformsh.site/blog/"
</Location>

Все еще не работает

Вынесли директивы из блока Location и отредактировали их так:

  SSLProxyEngine on
  ProxyPreserveHost on
  ProxyPass "/blog/" "https://master-7rqtwti-i7feq5lebr6se.eu-2.platformsh.site/blog"
  ProxyPassReverse "/blog/" "https://master-7rqtwti-i7feq5lebr6se.eu-2.platformsh.site/blog"

все еще не работает

Выключил проверку сертификата (доверяю сертификату на новом сервере приложений):

SSLProxyVerify none 
SSLProxyCheckPeerCN off
SSLProxyCheckPeerName off
SSLProxyCheckPeerExpire off

Итак, наконец, запросы передаются на другой сервер, но теперь я вижу ошибку 404, возвращаемую сервером приложений, потому что сервер не понимает исходный URL-адрес (https://www.mysite.co.uk/blog/)

Нет ошибок в файлах журнала ни на одном сервере?!?!

Что мне нужно изменить, чтобы это работало?

Вывод apachectl -S:

VirtualHost configuration:
*:80                   is a NameVirtualHost
         default server indigo-1.mysite.co.uk (/etc/httpd/conf.d/000-mysite.conf:27)
         port 80 namevhost indigo-1.mysite.co.uk (/etc/httpd/conf.d/000-mysite.conf:27)
         port 80 namevhost www.mysite.co.uk (/etc/httpd/conf.d/zzz-mysite.conf:59)
                 alias mysite.co.uk
                 alias cdn.mysite.co.uk
         port 80 namevhost pugpig.mysite.co.uk (/etc/httpd/conf.d/zzz-mysite.conf:73)
         port 80 namevhost www.mysite2.co.uk (/etc/httpd/conf.d/zzz-mysite.conf:87)
                 alias mysite2.co.uk
                 alias cdn.mysite2.co.uk
*:443                  is a NameVirtualHost
         default server indigo-1.mysite.co.uk (/etc/httpd/conf.d/000-mysite.conf:44)
         port 443 namevhost indigo-1.mysite.co.uk (/etc/httpd/conf.d/000-mysite.conf:44)
         port 443 namevhost indigo-1.mysite.co.uk (/etc/httpd/conf.d/ssl.conf:56)
         port 443 namevhost www.mysite.co.uk (/etc/httpd/conf.d/zzz-mysite.conf:63)
                 alias mysite.co.uk
                 alias cdn.mysite.co.uk
         port 443 namevhost pugpig.mysite.co.uk (/etc/httpd/conf.d/zzz-mysite.conf:77)
         port 443 namevhost www.mysite2.co.uk (/etc/httpd/conf.d/zzz-mysite.conf:91)
                 alias mysite2.co.uk
                 alias cdn.mysite2.co.uk
ServerRoot: "/etc/httpd"
Main DocumentRoot: "/var/www/html"
Main ErrorLog: "/etc/httpd/logs/error_log"
Mutex authdigest-opaque: using_defaults
Mutex proxy-balancer-shm: using_defaults
Mutex rewrite-map: using_defaults
Mutex authdigest-client: using_defaults
Mutex ssl-stapling: using_defaults
Mutex proxy: using_defaults
Mutex authn-socache: using_defaults
Mutex ssl-cache: using_defaults
Mutex default: dir="/run/httpd/" mechanism=default 
Mutex mpm-accept: using_defaults
PidFile: "/run/httpd/httpd.pid"
Define: _RH_HAS_HTTPPROTOCOLOPTIONS
Define: DUMP_VHOSTS
Define: DUMP_RUN_CFG
User: name="apache" id=48
Group: name="apache" id=48

Я заставил это работать, удалив настройку ProxyPreserveHost, поэтому моя окончательная конфигурация:

  SSLProxyEngine on
  SSLProxyVerify none
  SSLProxyCheckPeerCN off
  SSLProxyCheckPeerName off
  SSLProxyCheckPeerExpire off
  ProxyPass "/blog" "https://master-7rqtwti-i7feq5lebr6se.eu-2.platformsh.site/blog" retry=1 acquire=3000 timeout=600 Keepalive=on
  ProxyPassReverse "/blog"  "https://master-7rqtwti-i7feq5lebr6se.eu-2.platformsh.site/blog"
  ProxyPass "/assets" "https://master-7rqtwti-i7feq5lebr6se.eu-2.platformsh.site/assets" retry=1 acquire=3000 timeout=600 Keepalive=on
  ProxyPassReverse "/assets" "https://master-7rqtwti-i7feq5lebr6se.eu-2.platformsh.site/assets"