Use a proxy config that works

This commit is contained in:
Jake McDermott 2020-06-29 10:05:23 -04:00
parent f5d38f57d4
commit bde1ff1187
No known key found for this signature in database
GPG Key ID: 0E56ED990CDFCB4F
4 changed files with 11 additions and 39 deletions

View File

@ -1,10 +1,8 @@
FROM node:10
ARG NPMRC_FILE=.npmrc
ENV NPMRC_FILE=${NPMRC_FILE}
ARG TARGET_HOST='awx'
ENV TARGET_HOST=${TARGET_HOST}
ARG TARGET_PORT=8043
ENV TARGET_PORT=${TARGET_PORT}
ARG TARGET='https://awx:8043'
ENV TARGET=${TARGET}
ENV CI=true
WORKDIR /ui_next
ADD public public

View File

@ -14,14 +14,11 @@ npm --prefix=awx/ui_next start
### Using an External Server
If you normally run awx on an external host/server (in this example, `awx.local`),
you'll need to update your django settings and use the `TARGET_HOST` and `TARGET_PORT` environment variables:
you'll need use the `TARGET` environment variable when starting the ui development
server:
```shell
echo "CSRF_TRUSTED_ORIGINS = ['awx.local:8043']" >> /awx/settings/development.py
TARGET_HOST='awx.local:8043' TARGET_PORT=8043 npm --prefix awx/ui_next start
```
**Note:** When using an external server, you must also manually update the `proxy` field in `package.json`
to point to the new websocket url.
TARGET='https://awx.local:8043' npm --prefix awx/ui_next start
## Testing
```shell
@ -79,7 +76,7 @@ To run:
```shell
cd awx/awx/ui_next
docker build -t awx-ui-next .
docker run --name tools_ui_next_1 --network tools_default --link 'tools_awx_1:awx' -e TARGET_HOST=awx -p '3001:3001' --rm -v $(pwd)/src:/ui_next/src awx-ui-next
docker run --name tools_ui_next_1 --network tools_default --link 'tools_awx_1:awx' -e TARGET="https://awx:8043" -p '3001:3001' --rm -v $(pwd)/src:/ui_next/src awx-ui-next
```
**Note:** This is for CI, test systems, zuul, etc. For local development, see [usage](https://github.com/ansible/awx/blob/devel/awx/ui_next/README.md#usage)
**Note:** This is for CI, test systems, zuul, etc. For local development, see [usage](https://github.com/ansible/awx/blob/devel/awx/ui_next/README.md#Development)

View File

@ -86,6 +86,5 @@
"<rootDir>/src/locales",
"index.js"
]
},
"proxy": "https://localhost:8043/websocket"
}
}

View File

@ -1,35 +1,13 @@
const { createProxyMiddleware } = require('http-proxy-middleware');
const TARGET_PORT = process.env.TARGET_PORT || 8043;
const TARGET_HOST = process.env.TARGET_HOST || 'localhost';
const TARGET = `https://${TARGET_HOST}:${TARGET_PORT}`;
// Note: The websocket proxy is configured
// manually using the 'proxy' field in package.json
const TARGET = process.env.TARGET || 'https://localhost:8043';
module.exports = app => {
app.use(
'/api/login/',
createProxyMiddleware({
createProxyMiddleware(['/api', '/websocket'], {
target: TARGET,
secure: false,
ws: false,
headers: {
Host: `localhost:${TARGET_PORT}`,
Origin: TARGET,
Referer: `${TARGET}/`,
},
})
);
app.use(
'/api',
createProxyMiddleware({
target: TARGET,
secure: false,
ws: false,
bypass: req =>
req.originalUrl.includes('hot-update.json') ||
req.originalUrl.includes('login'),
ws: true,
})
);
};