Skip to main content

Using Microsoft® IIS


Using Microsoft® IIS

IIS as a loadbalancer

TODO

IIS as a reverse proxy

These steps allow to "integrate" Rundeck with IIS. This could be necessary for example for these user cases:

  • to get Rundeck through the port 80 in a subdirectory of IIS (e.g. http://yoursite/rundeck)
  • when It is already set up a SSL certificate for a site and you want to reuse it without fiddling with the java certstore

If you are at least on 2008R2, you can install the ARR extension to proxy requests to the Jetty instance. To do so, we need first to modify the port rundeck is running and specify the "prefix" for all urls generated by rundeck. Also, to avoid that anyone bypass IIS, rundeck must listen only on 127.0.0.1.

Modify the %RDECK_BASE%\start_rundeck.bat port (81) and host (127.0.0.1) as follows:

set CURDIR=%~dp0
call %CURDIR%etc\profile.bat
java %RDECK_CLI_OPTS% %RDECK_SSL_OPTS%  "-Dserver.http.host=127.0.0.1" "-Dserver.http.port=81" -jar rundeckpro-launcher-XXXX-X.X.X.jar --installonly

But you can also put options in %RDECK_BASE%\etc\profile.bat (in this case the "prefix" and the little bit that makes rundeck work behind a reverse proxy) as long as you define all of them.

set RDECK_CLI_OPTS=-Xmx4096m -Xms1024m "-Drundeck.jetty.connector.forwarded=true" "-Dserver.web.context=/rundeck"

You will need to modify %RDECK_BASE%\server\config\rundeck-config.properties, as grails.serverURL is needed to be the absolute url:

grails.serverURL=http://yoursite/rundeck

Now, in IIS, (at the site level) create an URL Rewrite rule as follows:

  • add inbound rule
  • name: route_to_rdeck (or whatever you prefer) matches the pattern (using regular expression): rundeck.* (or a regex matching your "prefix")
  • action type: rewrite
  • rewrite url: http://127.0.0.1:81/{R:0}
  • check append query string

Then, any request coming to http://yoursite/rundeck will be proxying to your rundeck instance running on port 81 on the same server, and you'll be sure that every request will come in only proxyied by IIS, since rundeck is only listening to 127.0.0.1.

Troubleshooting

If the rewrite module does not work, go to the Application Request Routing settings on the IIS home, and enable the proxy.