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

Обратный прокси-сервер Apache не работает без косой черты

В настоящее время я пытаюсь настроить обратный прокси с 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.

С другой стороны, при проверке работающего вызова все выглядит нормально:

Я пробовал следующие идеи, но ни одна из них не сработала:

RewriteRule

Добавление правила перезаписи:

  RewriteEngine on
  RewriteRule "slug$" "slug/" [L,R=301]

Явный ввод URL

Явный ввод 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/