Estoy tratando de excluir algunas rutas en mi nginx proxypass y quiero que todo lo demás vaya a mi proxypass.
es decir, no quiero dar proxy_pass a ninguna URL que comience con 'pequeño' o 'estático', pero quiero que todo lo demás vaya a la ubicación de mi proxypass.
y estoy usando la siguiente expresión regular para lograr esto:
~ ^((?!tiny|static).)*$Pero siempre recibo el error 404. Si navego a la siguiente URL en el navegador
localhost:8080/xyzquiero que vaya a
localhost:8000/api/tiny/records/xyz¿Puede alguien por favor ayudarme a señalar cuál es el problema?
Aquí está mi archivo conf nginx completo: -
server { listen 8080; server_name localhost; location ~ ^((?!tiny|static).)*$ { proxy_pass http://localhost:8000/api/tiny/records/$1; } location / { proxy_pass http://localhost:8000; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } }Muchas gracias.
Te falta un / y tienes el * en el lugar equivocado. La expresión regular debe ser:
^(/(?!tiny|static).*)$Pero no necesita usar una expresión regular con una aserción anticipada negativa. En su lugar, coloque una expresión regular normal en el otro bloque de ubicación.
Por ejemplo:
location / { proxy_pass http://localhost:8000/api/tiny/records/; } location ~ ^/(tiny|static) { proxy_pass http://localhost:8000; }