В настоящее время я пытаюсь настроить обратный прокси с Apache. Я выбрал следующую конфигурацию:
<VirtualHost *:80>
ServerName my-server
SSLProxyEngine on
SSLProxyVerify none
SSLProxyCheckPeerCN off
SSLProxyCheckPeerName off
SSLProxyCheckPeerExpire off
ProxyPreserveHost on
ProxyRequests off
ProxyPass "/c/" "https://other.server.com/"
ProxyPassReverse "/c/" "https://other.server.com/"
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
Проблема, с которой я столкнулся, заключается в том, что когда я перехожу к localhost:8080/c/slug/
он работает, как ожидалось, но когда я перехожу к localhost:8080/c/slug
он перенаправляет меня на localhost:8080/slug
вместо получения контента с прокси-сервера.
При просмотре заголовков звонков я обнаружил 301: Moved permanently
.
С другой стороны, при проверке работающего вызова все выглядит нормально:
Я пробовал следующие идеи, но ни одна из них не сработала:
Добавление правила перезаписи:
RewriteEngine on
RewriteRule "slug$" "slug/" [L,R=301]
Явный ввод URL-адреса, к которому я пытаюсь получить доступ, без косой черты:
ProxyPass "/c/slug" "https://other.server.com/"
ProxyPassReverse "/c/slug" "https://other.server.com/"
Я также пробовал включать и выключать ProxyRequests
, но тоже не сработало.
Любая помощь приветствуется.
У меня была аналогичная проблема, но в моем случае я перенаправлял VirtualHost с HTTP на VirtualHost с HTTPS, а в моей директиве Redirect отсутствовал последний /.
Например: Перенаправить / https: // localhost
И я решил: Redirect / https: // localhost/