Welcome! Log In Create A New Profile

Advanced

Re: nested location, proxy, alias and multiple "/" locations

Francis Daly
January 19, 2014 06:04AM
On Sun, Jan 19, 2014 at 04:57:27AM -0500, sergiks wrote:

Hi there,

I'll describe what I think you want you want nginx to do. Please correct
me where I've guessed wrongly.

> There's a web root /var/www/site/ that responds to http://www.site.com
> Then there's a Laravel (front controller php framework) installation in
> /var/www/Laravel1, and its web root folder is in /var/www/Laravel1/public/
> (index.php and static files are there)

> I want to let that Laravel app to respond to URIs under /app1/:

A request for /app1/one.png should return the file
/var/www/Laravel1/public/one.png or respond 404.

A similar mapping applies for every request that end in .png, .jpg,
and .gif, case-insensitively.

A request for /app1/two.txt should proxy_pass to
http://127.0.0.1:8081/two.txt and return whatever it returns.

A similar thing happens for every other request.

http://127.0.0.1:8081/ is a separate web server which is running "real"
Laravel.

So, for the following requests, nginx should:

> http://www.site.com/app1/

proxy to http://127.0.0.1:8081/

> http://www.site.com/app1/index.php

proxy to http://127.0.0.1:8081/index.php

> http://www.site.com/app1/api/method (pretty urls)

proxy to http://127.0.0.1:8081/api/method

> http://www.site.com/app1/css/bootstram.min.css (static files)

proxy to http://127.0.0.1:8081/css/bootstram.min.css


> The docs only says about a simple "location /i/" case
> and a regexp case.

"^~" is a prefix location. The "non-regex" documentation applies.

> My q is "location ^~ /i/" which seems to skip the replacement as in the
> simple case:
> location ^~ /app1/ {
> alias /var/www/Laravel/public/;
> proxy_pass http://127.0.0.1:8081;
> This example passes unchanged "/app1/api/method" to the proxy, instead of
> "/api/method"

That's clear, thanks.

That is working as intended. Your expectation is wrong.

"alias" (along with "root") does not affect "proxy_pass".


Does the following do what you want?

===
location ^~ /app1/ {
alias /var/www/Laravel1/public/;
proxy_pass http://127.0.0.1:8081/;
location ~* \.(jpg|gif|png)$ {}
}
===

(In general, unless the proxied server is careful, there are likely to
be problems trying to change parts of the url as is done above.)

f
--
Francis Daly francis@daoine.org

_______________________________________________
nginx mailing list
nginx@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx
Subject Author Posted

nested location, proxy, alias and multiple "/" locations

sergiks January 18, 2014 03:58PM

Re: nested location, proxy, alias and multiple "/" locations

Francis Daly January 18, 2014 08:32PM

Re: nested location, proxy, alias and multiple "/" locations

sergiks January 19, 2014 04:57AM

Re: nested location, proxy, alias and multiple "/" locations

Francis Daly January 19, 2014 06:04AM



Sorry, only registered users may post in this forum.

Click here to login

Online Users

Guests: 188
Record Number of Users: 8 on April 13, 2023
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready