Forum: NGINX proxy_pass to multi background monit http services

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
Seven D. (Guest)
on 2009-02-27 11:37
monit has an embedded web interface, I want to use nginx to proxy
several servers:

http://monit.example.com/server1
http://monit.example.com/server2
http://monit.example.com/server3
http://monit.example.com/server4


        location /server1/ {
                rewrite ^/sever1/(.*) /$1 break;
                proxy_pass http://localhost:2812; #monit default port
        }
        location /server2/ {.....}

The first page of each monit server displays well but because all links
in monit has absolute path http://monit.example.com/some_link instead of
http://monit.example.com/server1/some_link, I don't know hot to make
that work.


Can nginx do that? or we need to modify monit?

Thanks
Chris K. (Guest)
on 2009-03-23 23:39
Seven Du wrote:
> monit has an embedded web interface, I want to use nginx to proxy
> several servers:
>
> http://monit.example.com/server1
> http://monit.example.com/server2
> http://monit.example.com/server3
> http://monit.example.com/server4
>
>
>         location /server1/ {
>                 rewrite ^/sever1/(.*) /$1 break;
>                 proxy_pass http://localhost:2812; #monit default port
>         }
>         location /server2/ {.....}
>
> The first page of each monit server displays well but because all links
> in monit has absolute path http://monit.example.com/some_link instead of
> http://monit.example.com/server1/some_link, I don't know hot to make
> that work.
>
>

Had the same problem. I was running monit 4.8 and running into the same
issues. You need monit 4.9 or later to handle reverse proxying. This
post helped me get monit 4.10 installed without re-compiling from
source: http://route19.com/logbook/view/monit-410-on-ubuntu-804.

> Can nginx do that? or we need to modify monit?

So the answer is yes, nginx can do this with the proper version of
monit. Here's the relevant nginx set-up that worked for me:

        location /monit/ {
                auth_basic "Restricted";
                auth_basic_user_file /etc/nginx/auth.passwd;
                rewrite ^/monit/(.*) /$1 break;
                proxy_pass http://127.0.0.1:2812/;
        }

Hope this helps you
Igor S. (Guest)
on 2009-03-24 08:07
(Received via mailing list)
On Mon, Mar 23, 2009 at 10:39:13PM +0100, Chris Kraybill wrote:

> >         location /server1/ {
> >
>
>         location /monit/ {
>                 auth_basic "Restricted";
>                 auth_basic_user_file /etc/nginx/auth.passwd;
>                 rewrite ^/monit/(.*) /$1 break;
>                 proxy_pass http://127.0.0.1:2812/;
>         }

You do not need rewrite here - proxy_pass rewrite /monit/* to /* by
itself:

         location /monit/ {
                  ...
-                 rewrite ^/monit/(.*) /$1 break;
                  proxy_pass http://127.0.0.1:2812/;
Rush (Guest)
on 2009-06-26 01:52
(Received via mailing list)
my config (nginx replaces location uri with proxy_pass uri, if you
specified it after proxy hostname or proxy port) :


        location /monit/ {
            allow ;
            deny all;

            sub_filter_once off;
            sub_filter "a href='/" "a href='/monit/";

            proxy_pass http://127.0.0.1:2812/; # pass query to backend
as is
            proxy_set_header Host             $host;
            proxy_set_header X-Real-IP        $remote_addr;
        }


So, to replace wrong links I've used sub_filter directive. To use it
nginx must be recompiled with --with-http_sub_module (see if you already
have it - nginx -V).

With all of this configuration only on "_about" screen is the bug. Do
you need often see _about page ? ;)

Proklyatiy yazikivoi barrier...

Posted at Nginx Forum:
http://forum.nginx.org/read.php?2,306,3395#msg-3395
This topic is locked and can not be replied to.