2012-02-19 21 views
5

Estoy intentando configurar Lighttpd para que actúe como un proxy inverso. Quiero tener varias URLs que estén conectadas a diferentes servidores en diferentes puertos, ya sea en la misma máquina o dentro de la red local.Lighttpd Reverse Proxy Settings

Por ejemplo:

/ /static /socket /ajax

Lighttpd haría proxy de todas las conexiones excepto los que a /static. Deseo atender todas las solicitudes al /static directamente desde esta instancia de lighttpd.

Aquí está el archivo de configuración para mod_proxy:

## 
# Serve Static Content via Lighttpd. 
# 
$HTTP["url"] =~ "^/static/" { 
    server.document-root = "/path/to/my/static/files" 
    accesslog.filename = rootdir + "/var/log/static.log" 
    server.errorlog = rootdir + "/var/log/static.error.log" 
} 
## 
# Proxy to instance of Socket.io. 
# 
else $HTTP["url"] =~ "^/socket/" { 
    accesslog.filename = rootdir + "/var/log/socket.log" 
    server.errorlog = rootdir + "/var/log/socket.error.log" 
    proxy.server = (
     "" => ((
      "host" => "127.0.0.1", 
      "port" => 3000 
     )) 
    ) 
} 
## 
# Proxy to AJAX backend. 
# 
else $HTTP["url"] =~ "^/ajax/" { 
    accesslog.filename = rootdir + "/var/log/ajax.log" 
    server.errorlog = rootdir + "/var/log/ajax.error.log" 
    proxy.server = (
     "" => ((
      "host" => "127.0.0.1", 
      "port" => 4000 
     )) 
    ) 
} 
## 
# Proxy to something that returns my layout. 
# 
else $HTTP["url"] =~ "^/" { 
    accesslog.filename = rootdir + "/var/log/root.log" 
    server.errorlog = rootdir + "/var/log/root.error.log" 
    proxy.server = (
     "" => ((
      "host" => "127.0.0.1", 
      "port" => 5000 
      )) 
    ) 
} 

Estoy bastante seguro de que mis expresiones regulares son erróneas. También creo que el encordado else es incorrecto. Simplemente no estoy seguro de qué otra manera hacerlo. Soy nuevo en esta área, por lo que agradecería algunos empujones en la dirección correcta.

Gracias,

Respuesta

2

En sentido estricto, los bloques demás debe ser innecesaria.

En cuanto a su problema real, indica en su pregunta que desea hacer coincidir /ajax, pero su expresión regular busca /ajax/ (tenga en cuenta la barra diagonal). ¿Cuál es la URL que está solicitando?

+0

El principal punto de usar el proxy inverso, al menos en mi caso, es eludir la misma política de origen. Por lo tanto, mi caso de uso sería publicar datos y no preocuparse por nada más que el/ajax inicial. La excepción a esto es el/estático. Necesito preservar la solicitud en su totalidad para servir el contenido estático correcto. – Jonathan

+0

Por url, ¿quieres decir dominio? Solo quiero que lighttpd coincida en función de la URL, independientemente del dominio. ¿Lo entendí mal? – Jonathan

+0

No, solo me refiero a la parte de ruta (después del dominio). Solo estoy señalando la barra final en esta respuesta :) –

Cuestiones relacionadas