Apache Reverse Proxy-Konfiguration

Apache Reverse Proxy-Konfiguration

Ich bin noch ein ziemlicher Neuling in Sachen Apache und dessen Konfigurationen und hatte ein Problem mit meinem Webserver, auf dem ich Redmine, eine Ruby-Anwendung und auch statische Inhalte bereitstelle.

Apache 2.2

Derzeit sind die folgenden Proxys eingerichtet:

ProxyPass /portal https://mypage.domain.com:8181/portal
ProxyPassReverse /portal https://mypage.domain.com:8181/portal

ProxyPass /examples http://mypage.domain.com:8555/portal
ProxyPassReverse /examples http://mypage.domain.com:8555/portal

ProxyPass / balancer://redmine_cluster/
ProxyPassReverse / balancer://redmine_cluster/

<Proxy balancer://redmine_cluster>
     BalancerMember http://REDMINEMACHINENAME:3000/
</Proxy>

DocumentRoot "X:/app/Redmine/public" 

<Directory "X:/app/Redmine/public">
        Require all granted
        Options -MultiViews
</Directory>

RequestHeader set X-Forwarded-Proto "https"

Beim Zugriffsversuch:

Redmine:

mypage.domain.com

es bringt mich zu Redmine. Gut.

/Portal:

mypage.domain.com/portal

es schlägt fehl

Nicht gefunden. Die angeforderte URL /portal/ wurde auf diesem Server nicht gefunden.

WEB.SERVER.ADDRESS - - [09/Oct/2015:16:14:15 -0700] "GET /portal/ HTTP/1.1" 404 207
MY.IP.ADDRESS - - [09/Oct/2015:16:14:15 -0700] "GET /portal/ HTTP/1.1" 404 207

/Beispiele

mypage.domain.com/examples

MY.IP.ADDRESS - - [09/Oct/2015:16:10:11 -0700] "GET /examples/ HTTP/1.1" 200 1285

Werke


Ist es möglich, Apache so zu konfigurieren, dass ich verwenden kann

mypage.domain.com
mypage.domain.com/portal
mypage.domain.com/examples

um zu allen Orten zu gelangen, zu denen ich muss? Wie?

Irgendwelche Vorschläge für einen passenderen Titel?

Antwort1

Das ist nicht wirklich eine Antwort, aber mir ist im Kommentarfeld der Platz ausgegangen. Ich habe Ihre Konfiguration auf einem Laptop eingerichtet. Das passiert definitiv, weil Sie für /portal einen Proxy an eine https-Site senden. Wenn Sie es an eine http-Site senden können, wird das Problem sofort behoben. Ich habe es überprüft und wie Sie (höchstwahrscheinlich) habe ich mod_proxy und mod_proxy_connect aktiviert (zumindest in der Konfiguration), aber aus irgendeinem Grund wird die Anfrage nicht an die https-Site gesendet, unabhängig vom Port. Bei Ubuntu ist es irgendwie schwer zu sehen, welche Module tatsächlich geladen sind.

Nachdem ich auf dem Sniffer keine Daten zum Port gesehen habe, habe ich Apache2 überwacht und Folgendes erhalten:

[pid 397] read(5, <unfinished ...> [pid 458] accept4(4, 0xa9ee615c, [128], SOCK_CLOEXEC) = -1 EAGAIN (Resource temporarily unavailable)

Das ist nicht besonders nützlich, zeigt aber, dass absolut keine Anfrage gestellt wird. Sie können mit dem HTTPS-Teil allein spielen, es wird derselbe Fehler angezeigt, unabhängig von den anderen geproxiedeten URLs.

verwandte Informationen