How to do location /test/place?id=2

J. Lewis Muir jlmuir at imca-cat.org
Fri Oct 18 13:47:39 UTC 2019


On 10/18, P.V.Anthony wrote:
> On 18/10/19 5:26 am, Jeff Dyke wrote:
> > I know this is not an answer to your question, but it begs another,
> > mainly due to the if statement.  How many of these are you going to
> > have? https://www.nginx.com/resources/wiki/start/topics/depth/ifisevil/
> > 
> > You've likely considered this, but if not wanted to throw it out there.
> > Even if you are moving domains, could you create a separate route that
> > you could key off rather than arg_id?
> 
> Oh no. I was not aware of the "if" danger. Thank you for bringing that up.
> 
> I am not able to change the application. Is there another way without using
> "if"?

The "if" behavior is weird, so it's good to avoid it if you can, but
sometimes it really is the only way to do something.  And at the top of
that "If Is Evil" page it says:

  The only 100% safe things which may be done inside "if" in a location
  context are:

  * return ...;
  * rewrite ... last;

And in your example, you were doing a return inside an "if" which is
noted as being safe in a location context.

Lewis


More information about the nginx mailing list