ubuntuusers.de

lighttpd + mod_proxy

Status: Ungelöst | Ubuntu-Version: Ubuntu 14.04 (Trusty Tahr)
Antworten |

frank-w

Anmeldungsdatum:
30. September 2008

Beiträge: 419

Hallo, ich möchte in einen laufenden lighttpd die Seite eines anderen Rechners einbinden...das soll wohl über mod_proxy funktionieren. habe das aber nur bedingt hinbekommen.

einzige funktionierende Variante ist die folgende, setzt aber voraus, dass auf dem Zielsystem das Webverzeichnis genauso heist wie mein "Alias":

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
$HTTP["url"] =~ "(^/media(/|$))" {
#$HTTP["host"] =~ "10.10.10.56" {
    url.rewrite-once = ( "^/media/(.*)$" => "/$1" )
        proxy.server = (
                "" => (
                        "media" => (
                                "host" => "192.168.0.1",
                                "port" => 80,
                                "fix-redirects" => 1
                        )
                )
        )
}

weitere Varianten, die ich probiert habe (aktuell auskommentiert, wegen Probleme mit dem Rewrite (wird auf Client gemacht statt intern im Proxy)):

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#https://gist.github.com/ebouchut/1939752

#$HTTP["url"] =~ "(^/media/)" {
#  proxy.server = ( "" => (
#    "media:80" => # name
#    ( "host" => "127.0.0.1",
#      "port" => 82
#    )
#  )
#)
#}
# URL Rewriting Proxy
#
#  $SERVER["socket"] == ":82" {
#    url.rewrite-once = ( "^/media/(.*)$" => "/$1" )
#    proxy.server = ( "" => (
#      "media:80" => # name
#        ( "host" => "192.168.0.1", # Set the IP address of servername
#          "port" => 80
#        )
#      )
#    )
#  }

und dann noch das (funktioniert ähnlich der Konfig oben...funktioniert nur, wenn das Webverzeichnis=alias ist):

1
2
3
4
5
6
7
8
$HTTP["url"]=~"^/media2/(.*)" {
  proxy.server = ( "" =>
                   ( (
                       "host" => "192.168.0.1",
                       "port" => 80
                     ) )
                 )
}

kann ich nicht einne alias angeben, welcher beim Proxy rausgenomen wird? also dass rpi/media auf 192.168.0.1:80/ landet?

Gruß Frank

sebix Team-Icon

Ehemalige

Anmeldungsdatum:
14. April 2009

Beiträge: 5582

Hilft das hier:?

SF: Rewrite URL before passing to proxy Lighttpd:

url rewrites won't work in $HTTP["url"]. However, you should be able to rewrite it globally in this manner:

url.rewrite-once = ( "^/wsmobile/video/(.*)" => "/test/" )

and then catch it with:

$HTTP["url"] =~ "^/test/" {
   # do proxy here
}

frank-w

(Themenstarter)

Anmeldungsdatum:
30. September 2008

Beiträge: 419

wenn ich das richtig verstehe, würde das bei mir nicht funktionieren, da ich einen rewrite von "/media/" auf "/" mache...und dann kann ich nicht mehr matchen. und soweit arbeitet url.rewrite-once Richtung client und nicht intern

sebix Team-Icon

Ehemalige

Anmeldungsdatum:
14. April 2009

Beiträge: 5582

Soweit ich herausfand, ist das Problem in 1.4.34 behoben:

ModRewrite Docs:

NOTE: url rewriting does not work within a $HTTP["url"] conditional, but fixed in v1.4.34 (see #2526).

Revision 2927:

[core] decode URL before rewrite, enabling it to work in $HTTP["url"] conditionals (fixes #2526)

Auch SO: Proxying a sub folder using Lighttpd mod_proxy:

The way lighttpd's rewrite mod works it evaluates all the url.rewrite commands before it evaluates it's $HTTP["url"] conditionals, which means that any url.rewrite commands placed within an $HTTP["url"] conditional will have no effect.

Antworten |