URL-Rewriting not working

Lucas Rolff lucas at lucasrolff.com
Sun Apr 9 15:47:07 UTC 2017


In general try to avoid using the if directive too much.
https://www.nginx.com/resources/wiki/start/topics/depth/ifisevil/

For what you're trying to do, using a map would be the cleanest (and nicest) way I believe – someone can correct me if they want :-D

From: nginx <nginx-bounces at nginx.org<mailto:nginx-bounces at nginx.org>> on behalf of Ajay Garg <ajaygargnsit at gmail.com<mailto:ajaygargnsit at gmail.com>>
Reply-To: "nginx at nginx.org<mailto:nginx at nginx.org>" <nginx at nginx.org<mailto:nginx at nginx.org>>
Date: Sunday, 9 April 2017 at 17.37
To: "nginx at nginx.org<mailto:nginx at nginx.org>" <nginx at nginx.org<mailto:nginx at nginx.org>>
Subject: Re: URL-Rewriting not working

Hi Francis.

On Sun, Apr 9, 2017 at 8:47 PM, Francis Daly <francis at daoine.org<mailto:francis at daoine.org>> wrote:
On Sun, Apr 09, 2017 at 06:36:51PM +0530, Ajay Garg wrote:

Hi there,

> Got it Francis !!

Good news.

>                 location / {
>                                         auth_basic 'Restricted';
>                                         auth_basic_user_file
> /home/20da689b45c84f2b80bc84d651ed573f/.htpasswd;
>
>                                         if ($remote_user =
> "20da689b45c84f2b80bc84d651ed573f") {
>                                                 proxy_pass
> https://127.0.0.1:2000;
>                                         }
>
>                 }

When you come to add the second user, you will see that you want one
file with all the user/pass details.


Yes, I have already changed it to use just one file.
Upon that, would not just multiple sections of "if" checks for $remote_user suffice, something like ::

#########################################################################
server {
                listen 2000 ssl;

                ssl_certificate /etc/nginx/ssl/nginx.crt;
                ssl_certificate_key /etc/nginx/ssl/nginx.key;

                location / {
                                        auth_basic 'Restricted';
                                        auth_basic_user_file /etc/nginx/ssl/.htpasswd;

                                        if ($remote_user =  "user1") {
                                                proxy_pass https://127.0.0.1:2001<https://127.0.0.1:2000>;
                                        }

                                        if ($remote_user =  "user2") {
                                                proxy_pass https://127.0.0.1:2002<https://127.0.0.1:2000>;
                                        }

                                       # and so on ....

                }
         }
#########################################################################

Looking forward to hearing back from you.


Thanks and Regards,
Ajay




You will probably also see that it will be good to use a map
(http://nginx.org/r/map) to set a variable for the port to connect to,
based on $remote_user. Then your main config becomes just "proxy_pass
http://127.0.0.1:$per_user_port;".

Note that I have not tested that, and expect that there may be some more
subtleties involved, such as perhaps requiring an explicit proxy_redirect
directive.

Note also that you will probably want to set a default value for
$per_user_port, and make sure that something sensible happens when that
value is used -- probably a response along the lines of "something isn't
fully set up on the server yet; please wait or let us know", so the user
is not confused.

Good luck with it,

        f
--
Francis Daly        francis at daoine.org<mailto:francis at daoine.org>
_______________________________________________
nginx mailing list
nginx at nginx.org<mailto:nginx at nginx.org>
http://mailman.nginx.org/mailman/listinfo/nginx



--
Regards,
Ajay
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.nginx.org/pipermail/nginx/attachments/20170409/e89c4be8/attachment-0001.html>


More information about the nginx mailing list