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

Проблема с перенаправлением HTML в Apache2

У меня проблема с ProxyPass на моем сервере Apache в Ubuntu. Я настроил Apache для работы с виртуальными хостами на моем сервере. Есть приложение, которое запускается на сервере и использует порты 8001 8002. Мне нужно сделать что-то вроде www.example.com/demo/origin для отображения содержимого, которое я увижу при посещении www.example.com:8000. Отображаемое содержимое представляет собой множество HTML-страниц.

Это раздел конфигурации виртуального хоста, в котором есть проблемы

ProxyPass /demo/vader http://www.example.com:8001/  
ProxyPassReverse /demo/vader http://www.example:8001/  

ProxyPass /demo/skywalker http://www.example.com:8002/  
ProxyPassReverse /demo/skywalker http://www.example.com:8002/

Теперь, когда я приезжаю example.com/demo/skywalker, Я вижу первую страницу порта 8002, говорят login.html страница.

Второй должен был быть www.example.com/demo/skywalker/userAction.html, вместо этого сервер показывает www.example.com:8000/login.html. В журналах ошибок я вижу что-то вроде:

[Mon Nov 11 18:01:20 2013] [debug] mod_proxy_http.c(1850): proxy: HTTP: FILE NOT FOUND /htdocs/js/demo.72fbff3c9a97f15a4fff28e19b0de909.min.js  

У меня в системе нет папки htdocs.

Это проблема только при просмотре .html страниц. В противном случае такой проблемы не возникает.

Когда я приезжаю localhost:8001 он будет отображать все содержимое без каких-либо ошибок или проблем.

www.example.com/demo/skywalker отображает отдельную веб-страницу

www.example.com/demo/origin отображает другую веб-страницу

и

www.example.com/demo/vader отображает другую веб-страницу.

Я также пробовал использовать еще одну комбинацию,

<Location /demo/origin/>
  ProxyPass http://localhost:8000/
  ProxyPassReverse http://localhost:8000/
  ProxyHTMLURLMap http://localhost:8000/ /
</Location>

Это тоже не удается.

Буду очень признателен, если кто-нибудь поможет мне решить эту проблему.

Что касается Apache Reeves, есть ли у вас эти настройки?

# Proxy specific settings
ProxyRequests Off
ProxyPreserveHost On

Причина, по которой я спрашиваю, заключается в том, что ошибка связана с тем, что файл JavaScript не загружается. И CORS не позволит JavaScript загружать контент из того же домена. И ProxyPreserveHost сохранит example.com при обращении к www.example.com:8001 или www.example.com:8002

РЕДАКТИРОВАТЬ: Попробую более конкретный пример. Я предлагаю вам переделать логику прокси и попробовать это.

# Settings for adding a trailing slash to the URL
RewriteEngine On
RewriteCond %{REQUEST_URI} ^/(demo)$
RewriteRule ^(.*)$ http://%{HTTP_HOST}$1/ [R=301,L]

# Settings for Apache Reverse Proxying
<IfModule mod_proxy.c>

  # Proxy specific settings
  ProxyRequests Off
  ProxyPreserveHost On

  <Proxy *>
    AddDefaultCharset off
    Order deny,allow
    Allow from all
  </Proxy>

  ProxyPass /demo/vader http://www.example.com:8001/  
  ProxyPassReverse /demo/vader http://www.example:8001/  

  ProxyPass /demo/skywalker http://www.example.com:8002/  
  ProxyPassReverse /demo/skywalker http://www.example.com:8002/

</IfModule>