hashicorp / hashicorp/consul

Consul UI behind Nginx proxy doesn't work

Open
#7,928 14 comments 0 reactions 0 assignees View on GitHub
theme/ui
Dominant language
Go
Stars
30.1k
Forks
4.6k
Avg merge
2d 6h
Merged PRs (30d)
43

Description

**Old UI or New UI**
Consul 1.7.3 UI

**Describe the problem you're having**
I'm using Consul 1.7.3 and want to put its UI behind Nginx proxy for integrating with our own web services. But no matter what I configured, it just didn't work. Consul always show the Error page like below:
```
Error

Consul returned an error. You may have visited a URL that is loading an unknown resource, so you can try going back to the root or try re-submitting your ACL Token/SecretID by going back to ACLs.
Try looking in our documentation
```
The browser console report following error:
```
Error while processing route: dc.kv.folder e.map is not a function TypeError: e.map is not a function
at r.normalizePayload (http://192.168.18.99/consul/assets/consul-ui-80219c43077ea818f035ddb261cd9256.js:1172:34)
at r.normalizeResponse (http://192.168.18.99/consul/assets/consul-ui-80219c43077ea818f035ddb261cd9256.js:1165:12)
at r [as normalizeResponse] (http://192.168.18.99/consul/assets/vendor-5b94eb6a11bff93d1247a342ee40dbf8.js:3018:9)
at Pe (http://192.168.18.99/consul/assets/vendor-5b94eb6a11bff93d1247a342ee40dbf8.js:7179:68)
at http://192.168.18.99/consul/assets/vendor-5b94eb6a11bff93d1247a342ee40dbf8.js:7195:76
at w (http://192.168.18.99/consul/assets/vendor-5b94eb6a11bff93d1247a342ee40dbf8.js:5076:12)
at _ (http://192.168.18.99/consul/assets/vendor-5b94eb6a11bff93d1247a342ee40dbf8.js:5074:128)
at t.invoke (http://192.168.18.99/consul/assets/vendor-5b94eb6a11bff93d1247a342ee40dbf8.js:4609:163)
at e.t.flush (http://192.168.18.99/consul/assets/vendor-5b94eb6a11bff93d1247a342ee40dbf8.js:4601:74)
at e.t.flush (http://192.168.18.99/consul/assets/vendor-5b94eb6a11bff93d1247a342ee40dbf8.js:4614:358)
(anonymous) @ vendor-5b94eb6a11bff93d1247a342ee40dbf8.js:2680
error @ vendor-5b94eb6a11bff93d1247a342ee40dbf8.js:2680
O @ vendor-5b94eb6a11bff93d1247a342ee40dbf8.js:2690
c.triggerEvent @ vendor-5b94eb6a11bff93d1247a342ee40dbf8.js:2621
t.trigger @ vendor-5b94eb6a11bff93d1247a342ee40dbf8.js:4876
c.transitionDidError @ vendor-5b94eb6a11bff93d1247a342ee40dbf8.js:2621
(anonymous) @ vendor-5b94eb6a11bff93d1247a342ee40dbf8.js:4867
w @ vendor-5b94eb6a11bff93d1247a342ee40dbf8.js:5076
_ @ vendor-5b94eb6a11bff93d1247a342ee40dbf8.js:5074
v @ vendor-5b94eb6a11bff93d1247a342ee40dbf8.js:5072
t.invoke @ vendor-5b94eb6a11bff93d1247a342ee40dbf8.js:4609
t.flush @ vendor-5b94eb6a11bff93d1247a342ee40dbf8.js:4601
t.flush @ vendor-5b94eb6a11bff93d1247a342ee40dbf8.js:4614
r._end @ vendor-5b94eb6a11bff93d1247a342ee40dbf8.js:4676
_boundAutorunEnd @ vendor-5b94eb6a11bff93d1247a342ee40dbf8.js:4626
Promise.then (async)
n @ vendor-5b94eb6a11bff93d1247a342ee40dbf8.js:4585
r._scheduleAutorun @ vendor-5b94eb6a11bff93d1247a342ee40dbf8.js:4690
r._ensureInstance @ vendor-5b94eb6a11bff93d1247a342ee40dbf8.js:4688
r.schedule @ vendor-5b94eb6a11bff93d1247a342ee40dbf8.js:4647
(anonymous) @ vendor-5b94eb6a11bff93d1247a342ee40dbf8.js:2778
g @ vendor-5b94eb6a11bff93d1247a342ee40dbf8.js:5072
p @ vendor-5b94eb6a11bff93d1247a342ee40dbf8.js:5069
m @ vendor-5b94eb6a11bff93d1247a342ee40dbf8.js:5072
(anonymous) @ vendor-5b94eb6a11bff93d1247a342ee40dbf8.js:5097
success @ consul-ui-80219c43077ea818f035ddb261cd9256.js:1241
u @ vendor-5b94eb6a11bff93d1247a342ee40dbf8.js:949
fireWith @ vendor-5b94eb6a11bff93d1247a342ee40dbf8.js:950
A @ vendor-5b94eb6a11bff93d1247a342ee40dbf8.js:1230
(anonymous) @ vendor-5b94eb6a11bff93d1247a342ee40dbf8.js:1240
load (async)
send @ vendor-5b94eb6a11bff93d1247a342ee40dbf8.js:1240
ajax @ vendor-5b94eb6a11bff93d1247a342ee40dbf8.js:1218
(anonymous) @ consul-ui-80219c43077ea818f035ddb261cd9256.js:1245
(anonymous) @ vendor-5b94eb6a11bff93d1247a342ee40dbf8.js:5097
e @ vendor-5b94eb6a11bff93d1247a342ee40dbf8.js:5097
(anonymous) @ consul-ui-80219c43077ea818f035ddb261cd9256.js:1240
requestForFindAll @ consul-ui-80219c43077ea818f035ddb261cd9256.js:26
(anonymous) @ consul-ui-80219c43077ea818f035ddb261cd9256.js:37
request @ consul-ui-80219c43077ea818f035ddb261cd9256.js:1235
a @ consul-ui-80219c43077ea818f035ddb261cd9256.js:37
findAll @ consul-ui-80219c43077ea818f035ddb261cd9256.js:53
(anonymous) @ vendor-5b94eb6a11bff93d1247a342ee40dbf8.js:7194
w @ vendor-5b94eb6a11bff93d1247a342ee40dbf8.js:5076
(anonymous) @ vendor-5b94eb6a11bff93d1247a342ee40dbf8.js:5083
t.invoke @ vendor-5b94eb6a11bff93d1247a342ee40dbf8.js:4609
t.flush @ vendor-5b94eb6a11bff93d1247a342ee40dbf8.js:4601
t.flush @ vendor-5b94eb6a11bff93d1247a342ee40dbf8.js:4614
r._end @ vendor-5b94eb6a11bff93d1247a342ee40dbf8.js:4676
r.end @ vendor-5b94eb6a11bff93d1247a342ee40dbf8.js:4631
r._run @ vendor-5b94eb6a11bff93d1247a342ee40dbf8.js:4678
r._join @ vendor-5b94eb6a11bff93d1247a342ee40dbf8.js:4677
r.join @ vendor-5b94eb6a11bff93d1247a342ee40dbf8.js:4642
h @ vendor-5b94eb6a11bff93d1247a342ee40dbf8.js:3492
(anonymous) @ vendor-5b94eb6a11bff93d1247a342ee40dbf8.js:3495
l @ vendor-5b94eb6a11bff93d1247a342ee40dbf8.js:956
c @ vendor-5b94eb6a11bff93d1247a342ee40dbf8.js:957
setTimeout (async)
(anonymous) @ vendor-5b94eb6a11bff93d1247a342ee40dbf8.js:958
u @ vendor-5b94eb6a11bff93d1247a342ee40dbf8.js:949
fireWith @ vendor-5b94eb6a11bff93d1247a342ee40dbf8.js:950
fire @ vendor-5b94eb6a11bff93d1247a342ee40dbf8.js:950
u @ vendor-5b94eb6a11bff93d1247a342ee40dbf8.js:949
fireWith @ vendor-5b94eb6a11bff93d1247a342ee40dbf8.js:950
ready @ vendor-5b94eb6a11bff93d1247a342ee40dbf8.js:967
H @ vendor-5b94eb6a11bff93d1247a342ee40dbf8.js:967
```

Here comes my configuration:

- Consul agent command line:
```
/usr/bin/consul agent -server -node consul-server -client 0.0.0.0 -ui -ui-content-path /consul/ -bind 127.0.0.1 -bootstrap-expect 1 -data-dir /etc/consul/data -config-dir /etc/consul/consul.d
```
- nginx proxy:
```
location /consul {
proxy_pass http://127.0.0.1:8500;
proxy_set_header Host $host;
proxy_redirect off;
```

BTW, configuration above uses the `-ui-content-path` to change the prefix of url, but the same error still happen when I fallback to use the default prefix `/ui/`.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.