This commit is contained in:
Charles Wilkinson 2024-05-11 10:28:33 +02:00 committed by GitHub
commit 50068ed022
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 36 additions and 2 deletions

View file

@ -1,10 +1,39 @@
location {{ path }} { location {{ path }} {
set $forward_scheme {{ forward_scheme }};
set $forward_host {{ forward_host }};
set $forward_port {{ forward_port }};
proxy_set_header Host $host; proxy_set_header Host $host;
proxy_set_header X-Forwarded-Scheme $scheme; proxy_set_header X-Forwarded-Scheme $scheme;
proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-For $remote_addr; proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Real-IP $remote_addr;
proxy_pass {{ forward_scheme }}://{{ forward_host }}:{{ forward_port }}{{ forward_path }};
{% assign location_path_end_char = path | slice: -1 %}
{% assign forward_path_end_char = forward_path | slice: -1 %}
{% if location_path_end_char == "/" and forward_path_end_char != "/" %}
if ($request_uri ~ "{{ path }}(.*$)") {
# Location path ends with / so the regex match will exclude that slash from the match,
# but forward path doesn't, so we must prefix $path_remainder with a slash.
set $uri_remainder /$1;
}
{% elsif location_path_end_char != "/" and forward_path_end_char == "/" %}
# Location path does not have a trailing / but forward path does,
# so we make sure to capture $uri_remainder without a leading slash.
if ($request_uri ~ "{{ path }}/(.*$)") {
set $uri_remainder $1;
}
{% else %}
# Either both location path and forward path have a trailing /, or neither do.
# If both do, then we need to capture $uri_remainder without a leading /, but if neither do,
# then we need to capture $uri_remainder with a leading slash (if it has one - it could just be some GET parameters).
# The code for both scenarios happens to be the same.
if ($request_uri ~ "{{ path }}(.*$)") {
set $uri_remainder $1;
}
{% endif %}
proxy_pass $forward_scheme://$forward_host:$forward_port{{ forward_path }}$uri_remainder;
{% include "_access.conf" %} {% include "_access.conf" %}
{% include "_assets.conf" %} {% include "_assets.conf" %}
@ -18,7 +47,6 @@
proxy_http_version 1.1; proxy_http_version 1.1;
{% endif %} {% endif %}
{{ advanced_config }} {{ advanced_config }}
} }

View file

@ -51,6 +51,12 @@
</div> </div>
<div class="row config"> <div class="row config">
<div class="col-md-12"> <div class="col-md-12">
<p><%- i18n('all-hosts', 'advanced-config-var-headline') %></p>
<ul class="text-monospace">
<li><code>$forward_scheme</code> <%- i18n('proxy-hosts', 'forward-scheme') %></li>
<li><code>$forward_host</code> <%- i18n('proxy-hosts', 'forward-host') %></li>
<li><code>$forward_port</code> <%- i18n('proxy-hosts', 'forward-port') %></li>
</ul>
<div class="form-group"> <div class="form-group">
<textarea name="advanced_config" rows="8" class="form-control text-monospace model" placeholder="# <%- i18n('all-hosts', 'advanced-warning') %>"><%- advanced_config %></textarea> <textarea name="advanced_config" rows="8" class="form-control text-monospace model" placeholder="# <%- i18n('all-hosts', 'advanced-warning') %>"><%- advanced_config %></textarea>
</div> </div>