The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

Toadfarm::Manual::BehindReverseProxy - Toadfarm behind nginx

DESCRIPTION

This is useful when you want to run Toadfarm behind a reverse proxy, such as nginx.

Nginx config

The "rewrite" rule is very important, since it will remove the "/myapp" part from the request URL that the Mojolicious route dispatcher will see.

  upstream myapp {
    server 10.11.12.13:8001;
  }

  server {
    listen 80;
    server_name domain.com

    location /myapp {
      rewrite ^/myapp/?(.*)$ /$1 break;
      proxy_set_header X-Request-Base http://$host/myapp;
      proxy_pass http://myapp;
    }
  }

Toadfarm script

The magic part here is the "X-Request-Base" HTTP header which is set by nginx. In addition, you need to set proxy to "1" so Mojo::Server::Daemon can behave correctly.

  #!/usr/bin/perl
  use Toadfarm -init;

  mount "/home/www/project1/script/app1" => {
    "X-Request-Base" => "http://domain.com/myapp",
  };

  start [ "http://*:8080" ], proxy => 1, workers => 8;

SEE ALSO

http://wiki.nginx.org/HttpProxyModule

http://wiki.nginx.org/HttpUpstreamModule

AUTHOR

Jan Henning Thorsen - jhthorsen@cpan.org