mirror of
https://github.com/scm-manager/scm-manager.git
synced 2025-11-11 16:05:44 +01:00
73 lines
2.3 KiB
Markdown
73 lines
2.3 KiB
Markdown
---
|
|
title: Reverse Proxy
|
|
subtitle: How to use SCM-Manager with common reverse proxies
|
|
displayToc: true
|
|
---
|
|
|
|
SCM-Manager can run behind any reverse proxy, but a few rules must be respected.
|
|
The reverse proxy should not encode slashes and the `X-Forwarded-For` and `X-Forwarded-Host` headers must be send to SCM-Manager.
|
|
If the proxy uses a different protocol as the SCM-Manager e.g. https on proxy and http on scm-manager, the `X-Forwarded-Proto` header must be send too.
|
|
|
|
## nginx
|
|
|
|
```nginx
|
|
# set required forward headers
|
|
proxy_set_header X-Forwarded-Host $host:$server_port;
|
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
|
# if https is used make sure X-Forwarded-Proto header is send
|
|
proxy_set_header X-Forwarded-Proto $scheme;
|
|
|
|
# assuming scm-manager is running on localhost at port 8080
|
|
location /scm {
|
|
proxy_pass http://scm:8080;
|
|
}
|
|
```
|
|
|
|
## Apache
|
|
|
|
```apacheconf
|
|
# Ensure mod_proxy and mod_proxy_http modules are loaded
|
|
LoadModule proxy_module modules/mod_proxy.so
|
|
LoadModule proxy_http_module modules/mod_proxy_http.so
|
|
|
|
# avoid encoding of slashes
|
|
AllowEncodedSlashes NoDecode
|
|
|
|
# if https is used, make sure X-Forwarded-Proto is send
|
|
RequestHeader set "X-Forwarded-Proto" expr=%{REQUEST_SCHEME}
|
|
RequestHeader set "X-Forwarded-SSL" expr=%{HTTPS}
|
|
|
|
# assuming scm-manager is running on localhost at port 8080
|
|
ProxyPass /scm http://localhost:8080/scm nocanon
|
|
ProxyPassReverse /scm http://localhost:8080/scm
|
|
ProxyPassReverse /scm http://localhost:8080/scm
|
|
|
|
<Location /scm>
|
|
Order allow,deny
|
|
Allow from all
|
|
</Location>
|
|
```
|
|
|
|
### Notes
|
|
|
|
* Setting ProxyPassReverseCookiePath would most likely cause problems with session handling!
|
|
* If you encounter timeout problems, please have a look at [Apache Module mod_proxy#Workers](http://httpd.apache.org/docs/current/mod/mod_proxy.html#workers).
|
|
|
|
## HAProxy
|
|
|
|
```apacheconf
|
|
backend scm
|
|
# use http as proxy protocol
|
|
mode http
|
|
# sets X-Forwarded-For header
|
|
option forwardfor
|
|
# check if scm is running
|
|
option httpchk GET /scm/api/v2
|
|
# assuming scm-manager is running on localhost at port 8080
|
|
server dcscm1 localhost:8080 check
|
|
# sets X-Forwarded-Host header
|
|
http-request set-header X-Forwarded-Host %[req.hdr(Host)]
|
|
# sets X-Forwarded-Proto to https if ssl is enabled
|
|
http-request set-header X-Forwarded-Proto https if { ssl_fc }
|
|
```
|