Server Fault is a question and answer site for system and network administrators. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I'm trying to setup Nginx to forward requests to several backend services using proxy_pass.

Loading works, however the links within the page are to instead of

I'm running monit 5.2.5

I've tried with and without the rewrite rule below.

Config files;


location /monit {
#       rewrite /monit/(.*) /$1 break;
        proxy_pass        http://localhost:2812/;
.... more entries ....


server {
    listen 443;

    server_name_in_redirect off;

    include proxy.conf;

    ssl on;

proxy_connect_timeout   59s;
proxy_send_timeout      600;
proxy_read_timeout      600;
proxy_buffer_size       64k;
proxy_buffers           16 32k;
proxy_pass_header       Set-Cookie;
proxy_redirect          off;
proxy_hide_header       Vary;

proxy_busy_buffers_size         64k;
proxy_temp_file_write_size      64k;

proxy_set_header        Accept-Encoding         '';
proxy_ignore_headers    Cache-Control           Expires;
proxy_set_header        Referer                 $http_referer;
proxy_set_header        Host                    $host;
proxy_set_header        Cookie                  $http_cookie;
proxy_set_header        X-Real-IP               $remote_addr;
proxy_set_header        X-Forwarded-Host        $host;
proxy_set_header        X-Forwarded-Server      $host;
proxy_set_header        X-Forwarded-For         $proxy_add_x_forwarded_for;
proxy_set_header        X-Forwarded-Ssl         on;
proxy_set_header        X-Forwarded-Proto       https;
share|improve this question
up vote 2 down vote accepted

I've modified the rewrite rule, and ensure cleared cache, and this works;

location /monit {
        rewrite ^/monit/(.*) /$1 break;
        proxy_pass        http://localhost:2812/;
share|improve this answer

Sadly monit has no configuration that allows it to define the BASE_URL of its requests, which means it will always add its services directly under /, which breaks your /monit proxymatch. :( A workaround, but maybe ugly, is to name your monit services in a way that you can match THAT name in nginx.

Thats the only way you will be able to do it unless you somehow hack the monit source to change the URL to be http://localhost:2812/monit/ but I believe that is harder?

Another option might be if you can run nginx on a parallell port and just rewrite access against this port towards the monit URL/port, that way you can rewrite/proxypass the entire / instead of /monit which would make the links work. Depends on your public IP and available ports, but should do the trick?

share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.