mirror of
https://github.com/octoleo/plantuml-server.git
synced 2024-11-01 02:52:31 +00:00
98 lines
2.9 KiB
Markdown
98 lines
2.9 KiB
Markdown
|
# Nginx simple reverse proxy example
|
||
|
|
||
|
References:
|
||
|
- [Nginx documentation](https://nginx.org/en/docs/)
|
||
|
- [Nginx beginner's guide](https://nginx.org/en/docs/beginners_guide.html)
|
||
|
|
||
|
|
||
|
## Quick start
|
||
|
|
||
|
Be sure to have [`docker-compose.yml`](./docker-compose.yml) and [`nginx.conf`](./nginx.conf) inside your current working directory.
|
||
|
|
||
|
```bash
|
||
|
# start nginx and plantuml server
|
||
|
docker-compose up -d
|
||
|
|
||
|
# stop nginx and plantuml server
|
||
|
docker-compose down
|
||
|
```
|
||
|
|
||
|
Check with `docker ps` if both container are up and running:
|
||
|
|
||
|
```
|
||
|
$ docker ps
|
||
|
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
|
||
|
217e753a0dcf plantuml/plantuml-server:jetty "/entrypoint.sh" 4 seconds ago Up 3 seconds 8080/tcp plantuml-server
|
||
|
9b1290c100f5 nginx:alpine "/docker-entrypoint.…" 4 seconds ago Up 3 seconds 0.0.0.0:80->80/tcp, :::80->80/tcp nginx
|
||
|
```
|
||
|
|
||
|
Open [http://localhost](http://localhost) inside your browser.
|
||
|
YEAH! You are now using PlantUML behind a simple Nginx reverse proxy.
|
||
|
|
||
|
|
||
|
## Nginx configuration
|
||
|
|
||
|
```nginx
|
||
|
...
|
||
|
|
||
|
# PlantUML
|
||
|
location / {
|
||
|
proxy_set_header HOST $host;
|
||
|
proxy_set_header X-Forwarded-Host $host;
|
||
|
proxy_set_header X-Forwarded-Proto $scheme;
|
||
|
|
||
|
proxy_pass http://plantuml-server:8080/;
|
||
|
}
|
||
|
|
||
|
...
|
||
|
```
|
||
|
|
||
|
- `location /` to reverse complete server
|
||
|
- `proxy_set_header HOST $host` and `proxy_set_header X-Forwarded-Host $host` to replaces local plantuml server ip with FQDN
|
||
|
- `proxy_set_header X-Forwarded-Proto $scheme` to use reverse proxy protocol schema instead of communication schema between reverse proxy and plantuml server
|
||
|
- `proxy_pass http://plantuml-server:8080/` to set reverse proxy path to plantuml server.
|
||
|
Use the docker container name `plantuml-server` instead of ip addresses.
|
||
|
|
||
|
|
||
|
## Nginx and PlantUML server
|
||
|
|
||
|
```yaml
|
||
|
version: "3"
|
||
|
|
||
|
services:
|
||
|
plantuml-server:
|
||
|
image: plantuml/plantuml-server:jetty
|
||
|
container_name: plantuml-server
|
||
|
environment:
|
||
|
- TZ="Europe/Berlin"
|
||
|
|
||
|
nginx:
|
||
|
image: nginx:alpine
|
||
|
container_name: nginx
|
||
|
ports:
|
||
|
- "80:80"
|
||
|
environment:
|
||
|
- TZ="Europe/Berlin"
|
||
|
volumes:
|
||
|
- ./nginx.conf:/etc/nginx/nginx.conf:ro
|
||
|
```
|
||
|
|
||
|
- Set `container_name` to use them instead of e.g. ip addresses
|
||
|
- Set the environment `TZ` the ensure the same timezone.
|
||
|
For example to server timezone (`cat /etc/timezone`)?
|
||
|
- plantuml-server
|
||
|
* plantuml-server already exposes port `8080` to it's own local network (but not outside).
|
||
|
Since plantuml-server and nginx are sharing a network, nginx can reach plantuml-server without further settings.
|
||
|
- nginx
|
||
|
* open/link port `80` to the outside
|
||
|
* `./nginx.conf:/etc/nginx/nginx.conf:ro` to use your own Nginx configuration (readonly)
|
||
|
|
||
|
|
||
|
## Useful commands
|
||
|
|
||
|
```bash
|
||
|
# see whats going on inside your docker containers
|
||
|
docker logs --tail 50 --follow --timestamps nginx
|
||
|
docker logs --tail 50 --follow --timestamps plantuml-server
|
||
|
```
|