Apache reverse proxy gets redirectionApache reverse proxy: Change protocol in links and form targets from http to httpsnginx + varnish + apache differente IPs in VirtualHost ApacheHow to handle serlvet login redirects which cross reverse proxy virtual host boundaryeXist-db: can't start webstart client on a closed port, reverse proxied via apacheConnection refused HTTPS on ApacheHTTPS reverse proxy using apacheCorrect Apache reverse proxy config with SSL for Jenkins and SonarReverse Proxy with https redirect in LighttpdApache reverse proxy to docker containerHow to redirect nginx from http to https behind an apache reverse proxy?
Why would Ryanair allow me to book this journey through a third party, but not through their own website?
Apt - strange requests to d16r8ew072anqo.cloudfront.net:80
Python program to take in two strings and print the larger string
Need to read my home electrical meter
Of strange atmospheres - the survivable but unbreathable
Defining the standard model of PA so that a space alien could understand
How to cut a climbing rope?
My players want to grind XP but we're using milestone advancement
Is the Unsullied name meant to be ironic? How did it come to be?
In the 3D Zeldas, is it faster to roll or to simply walk?
Is it rude to call a professor by their last name with no prefix in a non-academic setting?
Specifying background color seen through semi-transparent surface
Did 20% of US soldiers in Vietnam use heroin, 95% of whom quit afterwards?
What is a Power on Reset IC?
Can I summon an otherworldly creature with the Gate spell without knowing its true name?
Popcorn is the only acceptable snack to consume while watching a movie
Do photons bend spacetime or not?
Find the three digit Prime number P from the given unusual relationships
In general, would I need to season a meat when making a sauce?
How should I introduce map drawing to my players?
Using credit/debit card details vs swiping a card in a payment (credit card) terminal
A steel cutting sword?
How to politely tell someone they did not hit "reply to all" in an email?
When the Torah was almost lost and one (or several) Rabbis saved it?
Apache reverse proxy gets redirection
Apache reverse proxy: Change protocol in links and form targets from http to httpsnginx + varnish + apache differente IPs in VirtualHost ApacheHow to handle serlvet login redirects which cross reverse proxy virtual host boundaryeXist-db: can't start webstart client on a closed port, reverse proxied via apacheConnection refused HTTPS on ApacheHTTPS reverse proxy using apacheCorrect Apache reverse proxy config with SSL for Jenkins and SonarReverse Proxy with https redirect in LighttpdApache reverse proxy to docker containerHow to redirect nginx from http to https behind an apache reverse proxy?
.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty height:90px;width:728px;box-sizing:border-box;
I'm trying to set up Apache as a reverse proxy. Here is the essential part of its configuration:
NameVirtualHost 10.16.10.245:9443
Listen 10.16.10.245:9443
<VirtualHost 10.16.10.245:9443>
ServerName proxy.lan:9443
SSLEngine on
...
TraceEnable off
SSLProxyEngine on
ProxyPreserveHost On
ProxyRequests Off
ProxyVia full
ProxyPass / http://localhost/
ProxyPassReverse / http://localhost/
</VirtualHost>
Note, that the proxy is listening on a non standard port 9443. When I use a dummy page showing phpinfo as a backend everything works as expected. However the site I need to put behind the proxy is either too strictly or too poorly written, so the behaivior changes like this:
client -> https://proxy.lan:443 -> http://localhost = success
client -> https://proxy.lan:<ANY_OTHER_PORT> -> http://localhost = wrong redirect
The client gets redirected from https://proxy.lan:9443/ to https://proxy.lan/auth/login and obviously proxy can't serve the request cause it doesn't listen on port 443:
# wget --no-check-certificate -vS https://proxy.lan:9443
--2019-05-12 02:51:37-- https://proxy.lan:9443/
Resolving proxy.lan (proxy.lan)... 10.10.254.186
Connecting to proxy.lan (proxy.lan)|10.10.254.186|:9443... connected.
WARNING: cannot verify proxy.lan's certificate, issued by '...':
Self-signed certificate encountered.
WARNING: certificate common name 'backend.lan' doesn't match requested host name 'proxy.lan'.
HTTP request sent, awaiting response...
HTTP/1.1 302 Found
Date: Sat, 11 May 2019 23:51:37 GMT
Server: Apache
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-cache, no-store, must-revalidate
Pragma: no-cache
Location: https://proxy.lan/auth/login
X-Frame-Options: DENY
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff
Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
Content-Security-Policy: default-src *; style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval'
X-Permitted-Cross-Domain-Policies: none
Content-Length: 0
Content-Type: text/html; charset=UTF-8
Set-Cookie: PHPSESSID=...; path=/; secure; HttpOnly
Via: 1.1 proxy.lan:9443 (Apache/2.2.31)
Connection: close
Location: https://proxy.lan/auth/login [following]
--2019-05-12 02:51:37-- https://proxy.lan/auth/login
Connecting to proxy.lan (proxy.lan)|10.10.254.186|:443... failed: Connection refused.
Resolving proxy.lan (proxy.lan)... 10.10.254.186
Connecting to proxy.lan (proxy.lan)|10.10.254.186|:443... failed: Connection refused.
I can manually add the port to the resulting URL and https://proxy.lan:9443/auth/login works except for all links on the page pointing to https://proxy.lan/...
Apache environment looks like this:
HTTP_HOST proxy.lan:9443
HTTP_VIA 1.1 proxy.lan:9443 (Apache/2.2.31)
HTTP_X_FORWARDED_FOR 10.100.0.30
HTTP_X_FORWARDED_HOST proxy.lan:9443
HTTP_X_FORWARDED_SERVER proxy.lan
HTTP_CONNECTION Keep-Alive
SERVER_SIGNATURE <address>Apache Server at proxy.lan Port 9443</address>
SERVER_NAME proxy.lan
SERVER_ADDR ::1
SERVER_PORT 9443
REMOTE_ADDR ::1
...
Any ideas what can be done on the proxy side? Some rewrite rules maybe?
apache-2.2 web-server reverse-proxy redirect
add a comment |
I'm trying to set up Apache as a reverse proxy. Here is the essential part of its configuration:
NameVirtualHost 10.16.10.245:9443
Listen 10.16.10.245:9443
<VirtualHost 10.16.10.245:9443>
ServerName proxy.lan:9443
SSLEngine on
...
TraceEnable off
SSLProxyEngine on
ProxyPreserveHost On
ProxyRequests Off
ProxyVia full
ProxyPass / http://localhost/
ProxyPassReverse / http://localhost/
</VirtualHost>
Note, that the proxy is listening on a non standard port 9443. When I use a dummy page showing phpinfo as a backend everything works as expected. However the site I need to put behind the proxy is either too strictly or too poorly written, so the behaivior changes like this:
client -> https://proxy.lan:443 -> http://localhost = success
client -> https://proxy.lan:<ANY_OTHER_PORT> -> http://localhost = wrong redirect
The client gets redirected from https://proxy.lan:9443/ to https://proxy.lan/auth/login and obviously proxy can't serve the request cause it doesn't listen on port 443:
# wget --no-check-certificate -vS https://proxy.lan:9443
--2019-05-12 02:51:37-- https://proxy.lan:9443/
Resolving proxy.lan (proxy.lan)... 10.10.254.186
Connecting to proxy.lan (proxy.lan)|10.10.254.186|:9443... connected.
WARNING: cannot verify proxy.lan's certificate, issued by '...':
Self-signed certificate encountered.
WARNING: certificate common name 'backend.lan' doesn't match requested host name 'proxy.lan'.
HTTP request sent, awaiting response...
HTTP/1.1 302 Found
Date: Sat, 11 May 2019 23:51:37 GMT
Server: Apache
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-cache, no-store, must-revalidate
Pragma: no-cache
Location: https://proxy.lan/auth/login
X-Frame-Options: DENY
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff
Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
Content-Security-Policy: default-src *; style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval'
X-Permitted-Cross-Domain-Policies: none
Content-Length: 0
Content-Type: text/html; charset=UTF-8
Set-Cookie: PHPSESSID=...; path=/; secure; HttpOnly
Via: 1.1 proxy.lan:9443 (Apache/2.2.31)
Connection: close
Location: https://proxy.lan/auth/login [following]
--2019-05-12 02:51:37-- https://proxy.lan/auth/login
Connecting to proxy.lan (proxy.lan)|10.10.254.186|:443... failed: Connection refused.
Resolving proxy.lan (proxy.lan)... 10.10.254.186
Connecting to proxy.lan (proxy.lan)|10.10.254.186|:443... failed: Connection refused.
I can manually add the port to the resulting URL and https://proxy.lan:9443/auth/login works except for all links on the page pointing to https://proxy.lan/...
Apache environment looks like this:
HTTP_HOST proxy.lan:9443
HTTP_VIA 1.1 proxy.lan:9443 (Apache/2.2.31)
HTTP_X_FORWARDED_FOR 10.100.0.30
HTTP_X_FORWARDED_HOST proxy.lan:9443
HTTP_X_FORWARDED_SERVER proxy.lan
HTTP_CONNECTION Keep-Alive
SERVER_SIGNATURE <address>Apache Server at proxy.lan Port 9443</address>
SERVER_NAME proxy.lan
SERVER_ADDR ::1
SERVER_PORT 9443
REMOTE_ADDR ::1
...
Any ideas what can be done on the proxy side? Some rewrite rules maybe?
apache-2.2 web-server reverse-proxy redirect
add a comment |
I'm trying to set up Apache as a reverse proxy. Here is the essential part of its configuration:
NameVirtualHost 10.16.10.245:9443
Listen 10.16.10.245:9443
<VirtualHost 10.16.10.245:9443>
ServerName proxy.lan:9443
SSLEngine on
...
TraceEnable off
SSLProxyEngine on
ProxyPreserveHost On
ProxyRequests Off
ProxyVia full
ProxyPass / http://localhost/
ProxyPassReverse / http://localhost/
</VirtualHost>
Note, that the proxy is listening on a non standard port 9443. When I use a dummy page showing phpinfo as a backend everything works as expected. However the site I need to put behind the proxy is either too strictly or too poorly written, so the behaivior changes like this:
client -> https://proxy.lan:443 -> http://localhost = success
client -> https://proxy.lan:<ANY_OTHER_PORT> -> http://localhost = wrong redirect
The client gets redirected from https://proxy.lan:9443/ to https://proxy.lan/auth/login and obviously proxy can't serve the request cause it doesn't listen on port 443:
# wget --no-check-certificate -vS https://proxy.lan:9443
--2019-05-12 02:51:37-- https://proxy.lan:9443/
Resolving proxy.lan (proxy.lan)... 10.10.254.186
Connecting to proxy.lan (proxy.lan)|10.10.254.186|:9443... connected.
WARNING: cannot verify proxy.lan's certificate, issued by '...':
Self-signed certificate encountered.
WARNING: certificate common name 'backend.lan' doesn't match requested host name 'proxy.lan'.
HTTP request sent, awaiting response...
HTTP/1.1 302 Found
Date: Sat, 11 May 2019 23:51:37 GMT
Server: Apache
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-cache, no-store, must-revalidate
Pragma: no-cache
Location: https://proxy.lan/auth/login
X-Frame-Options: DENY
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff
Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
Content-Security-Policy: default-src *; style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval'
X-Permitted-Cross-Domain-Policies: none
Content-Length: 0
Content-Type: text/html; charset=UTF-8
Set-Cookie: PHPSESSID=...; path=/; secure; HttpOnly
Via: 1.1 proxy.lan:9443 (Apache/2.2.31)
Connection: close
Location: https://proxy.lan/auth/login [following]
--2019-05-12 02:51:37-- https://proxy.lan/auth/login
Connecting to proxy.lan (proxy.lan)|10.10.254.186|:443... failed: Connection refused.
Resolving proxy.lan (proxy.lan)... 10.10.254.186
Connecting to proxy.lan (proxy.lan)|10.10.254.186|:443... failed: Connection refused.
I can manually add the port to the resulting URL and https://proxy.lan:9443/auth/login works except for all links on the page pointing to https://proxy.lan/...
Apache environment looks like this:
HTTP_HOST proxy.lan:9443
HTTP_VIA 1.1 proxy.lan:9443 (Apache/2.2.31)
HTTP_X_FORWARDED_FOR 10.100.0.30
HTTP_X_FORWARDED_HOST proxy.lan:9443
HTTP_X_FORWARDED_SERVER proxy.lan
HTTP_CONNECTION Keep-Alive
SERVER_SIGNATURE <address>Apache Server at proxy.lan Port 9443</address>
SERVER_NAME proxy.lan
SERVER_ADDR ::1
SERVER_PORT 9443
REMOTE_ADDR ::1
...
Any ideas what can be done on the proxy side? Some rewrite rules maybe?
apache-2.2 web-server reverse-proxy redirect
I'm trying to set up Apache as a reverse proxy. Here is the essential part of its configuration:
NameVirtualHost 10.16.10.245:9443
Listen 10.16.10.245:9443
<VirtualHost 10.16.10.245:9443>
ServerName proxy.lan:9443
SSLEngine on
...
TraceEnable off
SSLProxyEngine on
ProxyPreserveHost On
ProxyRequests Off
ProxyVia full
ProxyPass / http://localhost/
ProxyPassReverse / http://localhost/
</VirtualHost>
Note, that the proxy is listening on a non standard port 9443. When I use a dummy page showing phpinfo as a backend everything works as expected. However the site I need to put behind the proxy is either too strictly or too poorly written, so the behaivior changes like this:
client -> https://proxy.lan:443 -> http://localhost = success
client -> https://proxy.lan:<ANY_OTHER_PORT> -> http://localhost = wrong redirect
The client gets redirected from https://proxy.lan:9443/ to https://proxy.lan/auth/login and obviously proxy can't serve the request cause it doesn't listen on port 443:
# wget --no-check-certificate -vS https://proxy.lan:9443
--2019-05-12 02:51:37-- https://proxy.lan:9443/
Resolving proxy.lan (proxy.lan)... 10.10.254.186
Connecting to proxy.lan (proxy.lan)|10.10.254.186|:9443... connected.
WARNING: cannot verify proxy.lan's certificate, issued by '...':
Self-signed certificate encountered.
WARNING: certificate common name 'backend.lan' doesn't match requested host name 'proxy.lan'.
HTTP request sent, awaiting response...
HTTP/1.1 302 Found
Date: Sat, 11 May 2019 23:51:37 GMT
Server: Apache
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-cache, no-store, must-revalidate
Pragma: no-cache
Location: https://proxy.lan/auth/login
X-Frame-Options: DENY
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff
Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
Content-Security-Policy: default-src *; style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval'
X-Permitted-Cross-Domain-Policies: none
Content-Length: 0
Content-Type: text/html; charset=UTF-8
Set-Cookie: PHPSESSID=...; path=/; secure; HttpOnly
Via: 1.1 proxy.lan:9443 (Apache/2.2.31)
Connection: close
Location: https://proxy.lan/auth/login [following]
--2019-05-12 02:51:37-- https://proxy.lan/auth/login
Connecting to proxy.lan (proxy.lan)|10.10.254.186|:443... failed: Connection refused.
Resolving proxy.lan (proxy.lan)... 10.10.254.186
Connecting to proxy.lan (proxy.lan)|10.10.254.186|:443... failed: Connection refused.
I can manually add the port to the resulting URL and https://proxy.lan:9443/auth/login works except for all links on the page pointing to https://proxy.lan/...
Apache environment looks like this:
HTTP_HOST proxy.lan:9443
HTTP_VIA 1.1 proxy.lan:9443 (Apache/2.2.31)
HTTP_X_FORWARDED_FOR 10.100.0.30
HTTP_X_FORWARDED_HOST proxy.lan:9443
HTTP_X_FORWARDED_SERVER proxy.lan
HTTP_CONNECTION Keep-Alive
SERVER_SIGNATURE <address>Apache Server at proxy.lan Port 9443</address>
SERVER_NAME proxy.lan
SERVER_ADDR ::1
SERVER_PORT 9443
REMOTE_ADDR ::1
...
Any ideas what can be done on the proxy side? Some rewrite rules maybe?
apache-2.2 web-server reverse-proxy redirect
apache-2.2 web-server reverse-proxy redirect
edited May 12 at 10:21
Fmy Oen
asked May 12 at 0:59
Fmy OenFmy Oen
29125
29125
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
The ProxyPreserveHost on
is causing this. If you are not sure-sure that you need it, always leave it at default off
and you are good.
For the rare cases when you do need ProxyPreserveHost on
, adjust your ProxyPassReverse
wisely - this is the only directive that handles the redirects.
ProxyPassReverse / http://localhost/
looks wrong in your scenario, because your backend (the 80 app) doesn't seem to say "I redirect you to http://localhost/foo/bar" anywhere. If you put ProxyPassReverse / https://proxy.lan/
there is a chance it will work better - check the official docs.
Thanks a lot @kubanczyk. Your version of ProxyPassReverse helped me to set the port right, although I can't say I understand clearly why it works. As for ProxyPreserveHost directive, it still set to on. In case it's off I get redirect to localhost/auth/login. I also installed mod_proxy_html to remap paths in resulting pageProxyHTMLEnable On; ProxyHTMLURLMap https://proxy.lan/ https://proxy.lan:9443/
and that concludes my setup.
– Fmy Oen
May 13 at 13:54
I think if you usecurl -v http://localhost
and pay attention to theHost:
header and theLocation:
header, you'll understand what theProxyPassReverse
does. It's a simple textual replacement. @FmyOen
– kubanczyk
May 13 at 19:54
Can you also explain the idea behindProxyPreserveHost Off
? Currently it looks for me like a total no-go, at least without applying some rewrite rules.
– Fmy Oen
May 14 at 8:53
The idea is to behave as a normal http client, i.e. use headerHost: localhost
when talking to urlhttp://localhost/
– kubanczyk
May 14 at 12:16
add a comment |
Your Answer
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "2"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fserverfault.com%2fquestions%2f966881%2fapache-reverse-proxy-gets-redirection%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
The ProxyPreserveHost on
is causing this. If you are not sure-sure that you need it, always leave it at default off
and you are good.
For the rare cases when you do need ProxyPreserveHost on
, adjust your ProxyPassReverse
wisely - this is the only directive that handles the redirects.
ProxyPassReverse / http://localhost/
looks wrong in your scenario, because your backend (the 80 app) doesn't seem to say "I redirect you to http://localhost/foo/bar" anywhere. If you put ProxyPassReverse / https://proxy.lan/
there is a chance it will work better - check the official docs.
Thanks a lot @kubanczyk. Your version of ProxyPassReverse helped me to set the port right, although I can't say I understand clearly why it works. As for ProxyPreserveHost directive, it still set to on. In case it's off I get redirect to localhost/auth/login. I also installed mod_proxy_html to remap paths in resulting pageProxyHTMLEnable On; ProxyHTMLURLMap https://proxy.lan/ https://proxy.lan:9443/
and that concludes my setup.
– Fmy Oen
May 13 at 13:54
I think if you usecurl -v http://localhost
and pay attention to theHost:
header and theLocation:
header, you'll understand what theProxyPassReverse
does. It's a simple textual replacement. @FmyOen
– kubanczyk
May 13 at 19:54
Can you also explain the idea behindProxyPreserveHost Off
? Currently it looks for me like a total no-go, at least without applying some rewrite rules.
– Fmy Oen
May 14 at 8:53
The idea is to behave as a normal http client, i.e. use headerHost: localhost
when talking to urlhttp://localhost/
– kubanczyk
May 14 at 12:16
add a comment |
The ProxyPreserveHost on
is causing this. If you are not sure-sure that you need it, always leave it at default off
and you are good.
For the rare cases when you do need ProxyPreserveHost on
, adjust your ProxyPassReverse
wisely - this is the only directive that handles the redirects.
ProxyPassReverse / http://localhost/
looks wrong in your scenario, because your backend (the 80 app) doesn't seem to say "I redirect you to http://localhost/foo/bar" anywhere. If you put ProxyPassReverse / https://proxy.lan/
there is a chance it will work better - check the official docs.
Thanks a lot @kubanczyk. Your version of ProxyPassReverse helped me to set the port right, although I can't say I understand clearly why it works. As for ProxyPreserveHost directive, it still set to on. In case it's off I get redirect to localhost/auth/login. I also installed mod_proxy_html to remap paths in resulting pageProxyHTMLEnable On; ProxyHTMLURLMap https://proxy.lan/ https://proxy.lan:9443/
and that concludes my setup.
– Fmy Oen
May 13 at 13:54
I think if you usecurl -v http://localhost
and pay attention to theHost:
header and theLocation:
header, you'll understand what theProxyPassReverse
does. It's a simple textual replacement. @FmyOen
– kubanczyk
May 13 at 19:54
Can you also explain the idea behindProxyPreserveHost Off
? Currently it looks for me like a total no-go, at least without applying some rewrite rules.
– Fmy Oen
May 14 at 8:53
The idea is to behave as a normal http client, i.e. use headerHost: localhost
when talking to urlhttp://localhost/
– kubanczyk
May 14 at 12:16
add a comment |
The ProxyPreserveHost on
is causing this. If you are not sure-sure that you need it, always leave it at default off
and you are good.
For the rare cases when you do need ProxyPreserveHost on
, adjust your ProxyPassReverse
wisely - this is the only directive that handles the redirects.
ProxyPassReverse / http://localhost/
looks wrong in your scenario, because your backend (the 80 app) doesn't seem to say "I redirect you to http://localhost/foo/bar" anywhere. If you put ProxyPassReverse / https://proxy.lan/
there is a chance it will work better - check the official docs.
The ProxyPreserveHost on
is causing this. If you are not sure-sure that you need it, always leave it at default off
and you are good.
For the rare cases when you do need ProxyPreserveHost on
, adjust your ProxyPassReverse
wisely - this is the only directive that handles the redirects.
ProxyPassReverse / http://localhost/
looks wrong in your scenario, because your backend (the 80 app) doesn't seem to say "I redirect you to http://localhost/foo/bar" anywhere. If you put ProxyPassReverse / https://proxy.lan/
there is a chance it will work better - check the official docs.
answered May 12 at 11:57
kubanczykkubanczyk
10.8k42946
10.8k42946
Thanks a lot @kubanczyk. Your version of ProxyPassReverse helped me to set the port right, although I can't say I understand clearly why it works. As for ProxyPreserveHost directive, it still set to on. In case it's off I get redirect to localhost/auth/login. I also installed mod_proxy_html to remap paths in resulting pageProxyHTMLEnable On; ProxyHTMLURLMap https://proxy.lan/ https://proxy.lan:9443/
and that concludes my setup.
– Fmy Oen
May 13 at 13:54
I think if you usecurl -v http://localhost
and pay attention to theHost:
header and theLocation:
header, you'll understand what theProxyPassReverse
does. It's a simple textual replacement. @FmyOen
– kubanczyk
May 13 at 19:54
Can you also explain the idea behindProxyPreserveHost Off
? Currently it looks for me like a total no-go, at least without applying some rewrite rules.
– Fmy Oen
May 14 at 8:53
The idea is to behave as a normal http client, i.e. use headerHost: localhost
when talking to urlhttp://localhost/
– kubanczyk
May 14 at 12:16
add a comment |
Thanks a lot @kubanczyk. Your version of ProxyPassReverse helped me to set the port right, although I can't say I understand clearly why it works. As for ProxyPreserveHost directive, it still set to on. In case it's off I get redirect to localhost/auth/login. I also installed mod_proxy_html to remap paths in resulting pageProxyHTMLEnable On; ProxyHTMLURLMap https://proxy.lan/ https://proxy.lan:9443/
and that concludes my setup.
– Fmy Oen
May 13 at 13:54
I think if you usecurl -v http://localhost
and pay attention to theHost:
header and theLocation:
header, you'll understand what theProxyPassReverse
does. It's a simple textual replacement. @FmyOen
– kubanczyk
May 13 at 19:54
Can you also explain the idea behindProxyPreserveHost Off
? Currently it looks for me like a total no-go, at least without applying some rewrite rules.
– Fmy Oen
May 14 at 8:53
The idea is to behave as a normal http client, i.e. use headerHost: localhost
when talking to urlhttp://localhost/
– kubanczyk
May 14 at 12:16
Thanks a lot @kubanczyk. Your version of ProxyPassReverse helped me to set the port right, although I can't say I understand clearly why it works. As for ProxyPreserveHost directive, it still set to on. In case it's off I get redirect to localhost/auth/login. I also installed mod_proxy_html to remap paths in resulting page
ProxyHTMLEnable On; ProxyHTMLURLMap https://proxy.lan/ https://proxy.lan:9443/
and that concludes my setup.– Fmy Oen
May 13 at 13:54
Thanks a lot @kubanczyk. Your version of ProxyPassReverse helped me to set the port right, although I can't say I understand clearly why it works. As for ProxyPreserveHost directive, it still set to on. In case it's off I get redirect to localhost/auth/login. I also installed mod_proxy_html to remap paths in resulting page
ProxyHTMLEnable On; ProxyHTMLURLMap https://proxy.lan/ https://proxy.lan:9443/
and that concludes my setup.– Fmy Oen
May 13 at 13:54
I think if you use
curl -v http://localhost
and pay attention to the Host:
header and the Location:
header, you'll understand what the ProxyPassReverse
does. It's a simple textual replacement. @FmyOen– kubanczyk
May 13 at 19:54
I think if you use
curl -v http://localhost
and pay attention to the Host:
header and the Location:
header, you'll understand what the ProxyPassReverse
does. It's a simple textual replacement. @FmyOen– kubanczyk
May 13 at 19:54
Can you also explain the idea behind
ProxyPreserveHost Off
? Currently it looks for me like a total no-go, at least without applying some rewrite rules.– Fmy Oen
May 14 at 8:53
Can you also explain the idea behind
ProxyPreserveHost Off
? Currently it looks for me like a total no-go, at least without applying some rewrite rules.– Fmy Oen
May 14 at 8:53
The idea is to behave as a normal http client, i.e. use header
Host: localhost
when talking to url http://localhost/
– kubanczyk
May 14 at 12:16
The idea is to behave as a normal http client, i.e. use header
Host: localhost
when talking to url http://localhost/
– kubanczyk
May 14 at 12:16
add a comment |
Thanks for contributing an answer to Server Fault!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fserverfault.com%2fquestions%2f966881%2fapache-reverse-proxy-gets-redirection%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown