2012-09-17 15 views
5

Estoy tratando de reescribir enlaces cuerpo de una página proxy usando algo como esto:Nginx sub_filter reescribe?

sub_filter http://proxied.page.come http://local.page.com; 
    sub_filter_once off; 

¿Es este el camino a seguir en absoluto? ¿Cuál es la diferencia entre el sub_filter module y la substitutions_filter

también puede ser utilizado variables en el delcaration sub_filter?

Respuesta

4

Idealmente, debería pedir al backend que escriba los enlaces correctos. Si bien es posible solucionar algunos casos simples utilizando un filtro secundario, generalmente no es algo posible (por ejemplo, si los datos devueltos no son texto, sino, por ejemplo, código de memoria flash).

Puede utilizar variables en una cadena de reemplazo en sub_filter (pero no en la cadena de igualar en respuesta original), es explícitamente documented:

una cadena de reemplazo puede contener variables.

En cuanto a los filtros secundarios, se trata de un módulo de terceros que se espera que sea más potente, aunque puede contener más errores. Siempre que el subfiltro estándar sea suficiente para usted, probablemente no desee utilizar un filtro secundario de terceros.

8

Esta es una forma perfectamente válida para reescribir enlaces en una página proxy. "El módulo ngx_http_sub_module es un filtro que modifica una respuesta mediante la sustitución de una cadena especificada por otro" (única sustitución)

El tercero nginx_substitutions_filter es un módulo de filtro que puede hacer tanto expresión regular y sustituciones de cadenas fijas en los cuerpos de respuesta

Por lo que el módulo de terceros se puede utilizar para sustituir varias cadenas, utilizando expresiones regulares y variables. e.g .:

subs_filter_types text/css text/xml; 
subs_filter http(s)?://(www.)?proxied.page.com/  http$1://$http_host/ r; 
subs_filter http(s)?://(www.)?proxied2.page.com/ http$1://$http_host/ r;