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.