nginx x-accel-redirect
http: //localhost/mount_points/mount_point1/myfile.zip

Comportamiento diferente de "ubicación" y "proxy_pass" en nginx x-accel-redirect



(1)

Tengo mi nginx conf como:

location ^~ /mount_points/mount_point1 { internal; alias /repos/mount_point_one; } location ^~ /to_proxy { internal; proxy_pass http://myproxy:5000; }

Cuando solicito '' http: //localhost/mount_points/mount_point1/myfile.zip '' obtengo "/repos/mount_point_one/myfile.zip" como se esperaba.

Mientras solicito '' http: //localhost/to_proxy/myfile2.html '', obtengo " http: // myproxy: 5000 / to_proxy / myfile2.html ".

En el primer caso, se eliminó la parte "/ mount_points / monte_punto1", y en el segundo caso, la parte "/ to_proxy" todavía allí, tengo que falsificar una dirección "/ to_proxy" en el servidor ascendente para averiguar esto.

¿Me perdí algo? Si solo tengo que reescribir la url, ¿cómo puedo eliminar el problema de la pieza "/ to_proxy" en el servidor ascendente?

Gracias.


La directiva proxy_pass puede realizar una función de aliasing, pero solo si se proporciona un URI opcional.

location ^~ /to_proxy/ { internal; proxy_pass http://myproxy:5000/; }

Para hacer que la asignación de alias funcione correctamente, también se agrega un seguimiento / al parámetro de location .

Ver este documento para más detalles.

Si el parámetro de seguimiento / location causa problemas, puede utilizar una rewrite ... break lugar, rewrite ... break :

location ^~ /to_proxy { internal; rewrite ^/to_proxy(?:/(.*))?$ /$1 break; proxy_pass http://myproxy:5000; }