{
    "componentChunkName": "component---src-templates-doc-tsx",
    "path": "/docs/3.9.x/en/administration/reverse-proxies/",
    "result": {"data":{"navigation":{"nodes":[{"section":"Getting started","entries":[{"frontmatter":{"title":"Installation","subtitle":"Installation of scm-manager","partiallyActive":true},"fields":{"slug":"/docs/3.9.x/en/installation/"}},{"frontmatter":{"title":"First Startup","subtitle":"Administration User Creation","partiallyActive":null},"fields":{"slug":"/docs/3.9.x/en/first-startup/"}},{"frontmatter":{"title":"Migrate from v1 to v3","subtitle":"How to use the Migration-Wizard","partiallyActive":null},"fields":{"slug":"/docs/3.9.x/en/migrate-scm-manager-from-v1/"}},{"frontmatter":{"title":"Migrate from v2 to v3","subtitle":"Changes in the configuration","partiallyActive":null},"fields":{"slug":"/docs/3.9.x/en/migrate-scm-manager-from-v2/"}},{"frontmatter":{"title":"Import existing repositories","subtitle":"How to import existing repositories into SCM-Manager","partiallyActive":null},"fields":{"slug":"/docs/3.9.x/en/import/"}},{"frontmatter":{"title":"Frequently Asked Questions","subtitle":null,"partiallyActive":null},"fields":{"slug":"/docs/3.9.x/en/faq/"}},{"frontmatter":{"title":"Known Issues","subtitle":null,"partiallyActive":null},"fields":{"slug":"/docs/3.9.x/en/known-issues/"}}]},{"section":"User-oriented","entries":[{"frontmatter":{"title":"Repository","subtitle":null,"partiallyActive":true},"fields":{"slug":"/docs/3.9.x/en/user/repo/"}},{"frontmatter":{"title":"User","subtitle":null,"partiallyActive":true},"fields":{"slug":"/docs/3.9.x/en/user/user/"}},{"frontmatter":{"title":"Groups","subtitle":null,"partiallyActive":true},"fields":{"slug":"/docs/3.9.x/en/user/group/"}},{"frontmatter":{"title":"Administration","subtitle":null,"partiallyActive":true},"fields":{"slug":"/docs/3.9.x/en/user/admin/"}},{"frontmatter":{"title":"Profile","subtitle":null,"partiallyActive":true},"fields":{"slug":"/docs/3.9.x/en/user/profile/"}},{"frontmatter":{"title":"Notifications","subtitle":null,"partiallyActive":true},"fields":{"slug":"/docs/3.9.x/en/user/notification/"}},{"frontmatter":{"title":"CLI Client","subtitle":null,"partiallyActive":true},"fields":{"slug":"/docs/3.9.x/en/user/cli/"}},{"frontmatter":{"title":"Shortcuts","subtitle":null,"partiallyActive":null},"fields":{"slug":"/docs/3.9.x/en/user/shortcuts/"}}]},{"section":"Administration","entries":[{"frontmatter":{"title":"Base Directory","subtitle":null,"partiallyActive":null},"fields":{"slug":"/docs/3.9.x/en/administration/basedirectory/"}},{"frontmatter":{"title":"Logging","subtitle":"Configuration and locations of SCM-Manager logging","partiallyActive":null},"fields":{"slug":"/docs/3.9.x/en/administration/logging/"}},{"frontmatter":{"title":"SCM-Server Configuration","subtitle":"Various configuration options for the SCM-Server","partiallyActive":null},"fields":{"slug":"/docs/3.9.x/en/administration/scm-server/"}},{"frontmatter":{"title":"Reverse Proxy","subtitle":"How to use SCM-Manager with common reverse proxies","partiallyActive":null},"fields":{"slug":"/docs/3.9.x/en/administration/reverse-proxies/"}},{"frontmatter":{"title":"Caching for Working Directories","subtitle":null,"partiallyActive":null},"fields":{"slug":"/docs/3.9.x/en/administration/workdir_caching/"}}]},{"section":"Development","entries":[{"frontmatter":{"title":"Intellij IDEA Configuration","subtitle":null,"partiallyActive":null},"fields":{"slug":"/docs/3.9.x/en/development/intellij-idea-configuration/"}},{"frontmatter":{"title":"Building SCM-Manager from Source","subtitle":null,"partiallyActive":null},"fields":{"slug":"/docs/3.9.x/en/development/build-from-source/"}},{"frontmatter":{"title":"Architecture overview","subtitle":null,"partiallyActive":null},"fields":{"slug":"/docs/3.9.x/en/development/architecture-overview/"}},{"frontmatter":{"title":"Common pitfall occurred while developing the SCM V2","subtitle":null,"partiallyActive":null},"fields":{"slug":"/docs/3.9.x/en/development/ui-common-pitfall/"}},{"frontmatter":{"title":"Permission Concept","subtitle":"Fine-grained permission for SCM-Manager v2","partiallyActive":null},"fields":{"slug":"/docs/3.9.x/en/development/permission-concept/"}},{"frontmatter":{"title":"Decision Table","subtitle":null,"partiallyActive":null},"fields":{"slug":"/docs/3.9.x/en/development/decision-table/"}},{"frontmatter":{"title":"Error Handling","subtitle":null,"partiallyActive":null},"fields":{"slug":"/docs/3.9.x/en/development/error-handling/"}},{"frontmatter":{"title":"Styleguide","subtitle":null,"partiallyActive":null},"fields":{"slug":"/docs/3.9.x/en/development/styleguide/"}},{"frontmatter":{"title":"Testing Guide","subtitle":"Howto write tests for SCM-Manager","partiallyActive":null},"fields":{"slug":"/docs/3.9.x/en/development/testing-guide/"}},{"frontmatter":{"title":"Integration Tests","subtitle":"How to run integration tests","partiallyActive":null},"fields":{"slug":"/docs/3.9.x/en/development/integration-tests/"}},{"frontmatter":{"title":"UI-Extensions","subtitle":"How to extend the SCM-Manager UI with plugins","partiallyActive":null},"fields":{"slug":"/docs/3.9.x/en/development/ui-extensions/"}},{"frontmatter":{"title":"I18n","subtitle":"Howto do internationalization","partiallyActive":null},"fields":{"slug":"/docs/3.9.x/en/development/i18n/"}},{"frontmatter":{"title":"Building Forms","subtitle":"Howto build forms for SCM-Manager","partiallyActive":null},"fields":{"slug":"/docs/3.9.x/en/development/building-forms/"}},{"frontmatter":{"title":"Javadoc","subtitle":null,"partiallyActive":null},"fields":{"slug":"/docs/3.9.x/en/development/javadoc/"}},{"frontmatter":{"title":"CLI Guidelines","subtitle":null,"partiallyActive":null},"fields":{"slug":"/docs/3.9.x/en/development/cli-guideline/"}},{"frontmatter":{"title":"Definition of Done","subtitle":null,"partiallyActive":null},"fields":{"slug":"/docs/3.9.x/en/development/definition-of-done/"}},{"frontmatter":{"title":"DOD for UI development","subtitle":null,"partiallyActive":null},"fields":{"slug":"/docs/3.9.x/en/development/ui-dod/"}}]},{"section":"Plugin Development","entries":[{"frontmatter":{"title":"Create a plugin","subtitle":"Create a new SCM-Manager plugin","partiallyActive":null},"fields":{"slug":"/docs/3.9.x/en/development/plugins/create/"}},{"frontmatter":{"title":"Migrate a v1 plugin","subtitle":null,"partiallyActive":null},"fields":{"slug":"/docs/3.9.x/en/development/plugins/migrate-plugin-from-v1/"}},{"frontmatter":{"title":"Extension Points","subtitle":null,"partiallyActive":null},"fields":{"slug":"/docs/3.9.x/en/development/plugins/extension-points/"}},{"frontmatter":{"title":"i18n for Plugins","subtitle":null,"partiallyActive":null},"fields":{"slug":"/docs/3.9.x/en/development/plugins/i18n-for-plugins/"}},{"frontmatter":{"title":"Plugin Descriptor","subtitle":null,"partiallyActive":null},"fields":{"slug":"/docs/3.9.x/en/development/plugins/plugin-descriptor/"}},{"frontmatter":{"title":"SCM-Manager v2 Plugin Development","subtitle":null,"partiallyActive":null},"fields":{"slug":"/docs/3.9.x/en/development/plugins/plugin-development/"}},{"frontmatter":{"title":"Publish","subtitle":"Publish your Plugin","partiallyActive":null},"fields":{"slug":"/docs/3.9.x/en/development/plugins/publish/"}}]}]},"versions":{"group":[{"fieldValue":"1.0.x"},{"fieldValue":"1.x"},{"fieldValue":"2.0.x"},{"fieldValue":"2.1.x"},{"fieldValue":"2.10.x"},{"fieldValue":"2.11.x"},{"fieldValue":"2.12.x"},{"fieldValue":"2.13.x"},{"fieldValue":"2.14.x"},{"fieldValue":"2.15.x"},{"fieldValue":"2.16.x"},{"fieldValue":"2.17.x"},{"fieldValue":"2.18.x"},{"fieldValue":"2.19.x"},{"fieldValue":"2.2.x"},{"fieldValue":"2.20.x"},{"fieldValue":"2.21.x"},{"fieldValue":"2.22.x"},{"fieldValue":"2.23.x"},{"fieldValue":"2.24.x"},{"fieldValue":"2.25.x"},{"fieldValue":"2.26.x"},{"fieldValue":"2.27.x"},{"fieldValue":"2.28.x"},{"fieldValue":"2.29.x"},{"fieldValue":"2.3.x"},{"fieldValue":"2.30.x"},{"fieldValue":"2.31.x"},{"fieldValue":"2.32.x"},{"fieldValue":"2.33.x"},{"fieldValue":"2.34.x"},{"fieldValue":"2.35.x"},{"fieldValue":"2.36.x"},{"fieldValue":"2.37.x"},{"fieldValue":"2.38.x"},{"fieldValue":"2.39.x"},{"fieldValue":"2.4.x"},{"fieldValue":"2.40.x"},{"fieldValue":"2.41.x"},{"fieldValue":"2.42.x"},{"fieldValue":"2.43.x"},{"fieldValue":"2.44.x"},{"fieldValue":"2.45.x"},{"fieldValue":"2.46.x"},{"fieldValue":"2.47.x"},{"fieldValue":"2.48.x"},{"fieldValue":"2.5.x"},{"fieldValue":"2.6.x"},{"fieldValue":"2.7.x"},{"fieldValue":"2.8.x"},{"fieldValue":"2.9.x"},{"fieldValue":"3.0.x"},{"fieldValue":"3.1.x"},{"fieldValue":"3.10.x"},{"fieldValue":"3.11.x"},{"fieldValue":"3.2.x"},{"fieldValue":"3.3.x"},{"fieldValue":"3.4.x"},{"fieldValue":"3.5.x"},{"fieldValue":"3.6.x"},{"fieldValue":"3.7.x"},{"fieldValue":"3.8.x"},{"fieldValue":"3.9.x"}]},"languages":{"group":[{"fieldValue":"de"},{"fieldValue":"en"}]},"markdownRemark":{"html":"<p>SCM-Manager can run behind any reverse proxy, but a few rules must be respected.\nThe reverse proxy should not encode slashes and the <code class=\"language-text\">X-Forwarded-For</code> and <code class=\"language-text\">X-Forwarded-Host</code> headers must be sent to\nSCM-Manager.\nIf the proxy uses a different protocol as the SCM-Manager e.g. https on proxy and http on scm-manager, the\n<code class=\"language-text\">X-Forwarded-Proto</code> header must be sent too.\nIf <code class=\"language-text\">XSRF protection</code> is enabled on the SCM-Manager server, the cookie has to be <code class=\"language-text\">HttpOnly=false</code> and must not be\nmodified.</p>\n<p>For SCM-Manager to work properly, the configuration <code class=\"language-text\">forwardHeadersEnabled</code> has to be set to <code class=\"language-text\">true</code> in the <code class=\"language-text\">config.yml</code>.\nTo avoid timeouts due to caching in the reverse proxies, you also might want to increase the <code class=\"language-text\">idleTimeout</code> to a higher\nvalue, depending on the size of your repositories (you might want to start with <code class=\"language-text\">300000</code>, that would be five minutes).\nSee the section about reverse proxies in <a href=\"../scm-server/\">SCM-Server configuration</a> for more information.</p>\n<h2 id=\"nginx\" style=\"position:relative;\"><a href=\"#nginx\" aria-label=\"nginx permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>nginx</h2>\n<div class=\"gatsby-highlight\" data-language=\"nginx\"><pre class=\"language-nginx\"><code class=\"language-nginx\"><span class=\"token comment\"># set required forward headers</span>\n<span class=\"token directive\"><span class=\"token keyword\">proxy_set_header</span> X-Forwarded-Host <span class=\"token variable\">$host</span>:<span class=\"token variable\">$server_port</span></span><span class=\"token punctuation\">;</span>\n<span class=\"token directive\"><span class=\"token keyword\">proxy_set_header</span> X-Forwarded-For <span class=\"token variable\">$proxy_add_x_forwarded_for</span></span><span class=\"token punctuation\">;</span>\n<span class=\"token comment\"># if https is used make sure X-Forwarded-Proto header is send</span>\n<span class=\"token directive\"><span class=\"token keyword\">proxy_set_header</span> X-Forwarded-Proto <span class=\"token variable\">$scheme</span></span><span class=\"token punctuation\">;</span>\n\n<span class=\"token comment\"># assuming scm-manager is running on localhost at port 8080</span>\n<span class=\"token directive\"><span class=\"token keyword\">location</span> /scm</span> <span class=\"token punctuation\">{</span>\n    <span class=\"token directive\"><span class=\"token keyword\">proxy_pass</span> http://scm:8080</span><span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span></code></pre></div>\n<h2 id=\"apache\" style=\"position:relative;\"><a href=\"#apache\" aria-label=\"apache permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Apache</h2>\n<p>If you use <code class=\"language-text\">VirtualHost</code> sections, please make sure to put the directives <code class=\"language-text\">AllowEncodedSlashes</code>, <code class=\"language-text\">RequestHeader</code>,\n<code class=\"language-text\">ProxyPass</code>, and <code class=\"language-text\">ProxyPassReverse</code> into the same section as the <code class=\"language-text\">Location</code> for SCM-Manager.</p>\n<div class=\"gatsby-highlight\" data-language=\"apacheconf\"><pre class=\"language-apacheconf\"><code class=\"language-apacheconf\"><span class=\"token comment\"># Ensure mod_proxy and mod_proxy_http modules are loaded</span>\n<span class=\"token directive-inline property\">LoadModule</span> proxy_module modules/mod_proxy.so\n<span class=\"token directive-inline property\">LoadModule</span> proxy_http_module modules/mod_proxy_http.so\n\n<span class=\"token comment\"># avoid encoding of slashes</span>\n<span class=\"token directive-inline property\">AllowEncodedSlashes</span> NoDecode\n\n<span class=\"token comment\"># if https is used, make sure X-Forwarded-Proto is send</span>\n<span class=\"token directive-inline property\">RequestHeader</span> set <span class=\"token string\">\"X-Forwarded-Proto\"</span> expr=<span class=\"token variable\">%{REQUEST_SCHEME}</span>\n<span class=\"token directive-inline property\">RequestHeader</span> set <span class=\"token string\">\"X-Forwarded-SSL\"</span> expr=<span class=\"token variable\">%{HTTPS}</span>\n\n<span class=\"token comment\"># assuming scm-manager is running on localhost at port 8080</span>\n<span class=\"token directive-inline property\">ProxyPass</span> /scm http://localhost:8080/scm nocanon\n<span class=\"token directive-inline property\">ProxyPassReverse</span> /scm http://localhost:8080/scm\n\n<span class=\"token directive-block tag\"><span class=\"token directive-block tag\"><span class=\"token punctuation\">&lt;</span>Location</span><span class=\"token directive-block-parameter attr-value\"> /scm</span><span class=\"token punctuation\">></span></span>\n    <span class=\"token directive-inline property\">Order</span> <span class=\"token directive-inline property\">allow</span>,deny\n    <span class=\"token directive-inline property\">Allow</span> from all\n<span class=\"token directive-block tag\"><span class=\"token directive-block tag\"><span class=\"token punctuation\">&lt;/</span>Location</span><span class=\"token punctuation\">></span></span></code></pre></div>\n<h3 id=\"notes\" style=\"position:relative;\"><a href=\"#notes\" aria-label=\"notes permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Notes</h3>\n<ul>\n<li>Setting ProxyPassReverseCookiePath would most likely cause problems with session handling!</li>\n<li>If you encounter timeout problems, please have a look at <a href=\"http://httpd.apache.org/docs/current/mod/mod_proxy.html#workers\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Apache Module mod_proxy#Workers</a>.</li>\n</ul>\n<h2 id=\"haproxy\" style=\"position:relative;\"><a href=\"#haproxy\" aria-label=\"haproxy permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>HAProxy</h2>\n<div class=\"gatsby-highlight\" data-language=\"apacheconf\"><pre class=\"language-apacheconf\"><code class=\"language-apacheconf\">backend scm\n    <span class=\"token comment\"># use http as proxy protocol</span>\n    mode http\n    <span class=\"token comment\"># sets X-Forwarded-For header</span>\n    option forwardfor\n    <span class=\"token comment\"># check if scm is running</span>\n    option httpchk GET /scm/api/v2\n    <span class=\"token comment\"># assuming scm-manager is running on localhost at port 8080</span>\n    server dcscm1 localhost:8080 check\n    <span class=\"token comment\"># sets X-Forwarded-Host header</span>\n    http-request set-header X-Forwarded-Host %[req.hdr(Host)]\n    <span class=\"token comment\"># sets X-Forwarded-Proto to https if ssl is enabled</span>\n    http-request set-header X-Forwarded-Proto https if { ssl_fc }</code></pre></div>","description":"SCM-Manager can run behind any reverse proxy, but a few rules must be respected.\nThe reverse proxy should not encode slashes and the  and  headers must be sent…","tableOfContents":"<ul>\n<li>\n<p><a href=\"#nginx\">nginx</a></p>\n</li>\n<li>\n<p><a href=\"#apache\">Apache</a></p>\n<ul>\n<li><a href=\"#notes\">Notes</a></li>\n</ul>\n</li>\n<li>\n<p><a href=\"#haproxy\">HAProxy</a></p>\n</li>\n</ul>","frontmatter":{"title":"Reverse Proxy","subtitle":"How to use SCM-Manager with common reverse proxies","displayToc":true,"description":null,"keywords":null,"image":null}}},"pageContext":{"slug":"/docs/3.9.x/en/administration/reverse-proxies/","version":"3.9.x","latestVersion":"3.11.x","latestPageVersion":"3.11.x","language":"en","relativePath":"/administration/reverse-proxies/","canonicalPath":"/docs/latest/en/administration/reverse-proxies/","latestRootPath":"/docs/3.11.x/en/"}},
    "staticQueryHashes": ["1973669194","2742214048","2956773653","2957019495","698804963"]}