docker kong 设置http跳转https
时间: 2023-10-01 19:05:48 浏览: 147
要将Docker中的Kong配置为将HTTP请求重定向到HTTPS,您可以按照以下步骤操作:
1. 准备SSL证书:首先,确保您已经获取了SSL证书的公钥和私钥。您可以购买证书或使用免费的证书颁发机构(如Let's Encrypt)来获取证书。
2. 创建Docker网络:运行以下命令创建一个Docker网络,以便Kong与其他容器进行通信:
```
$ docker network create kong-net
```
3. 运行Kong数据库容器:运行以下命令来启动Kong所需的数据库容器:
```
$ docker run -d --name kong-database \
--network=kong-net \
-p 5432:5432 \
-e "POSTGRES_USER=kong" \
-e "POSTGRES_DB=kong" \
-e "POSTGRES_PASSWORD=kong" \
postgres:12
```
4. 运行Kong数据库迁移容器:运行以下命令来执行数据库迁移:
```
$ docker run --rm \
--network=kong-net \
-e "KONG_DATABASE=postgres" \
-e "KONG_PG_HOST=kong-database" \
-e "KONG_PG_USER=kong" \
-e "KONG_PG_PASSWORD=kong" \
-e "KONG_CASSANDRA_CONTACT_POINTS=kong-database" \
kong:latest kong migrations bootstrap
```
5. 运行Kong代理容器:现在,运行以下命令来启动Kong代理容器,并将SSL证书和其他必要配置添加到容器中:
```
$ docker run -d --name kong \
--network=kong-net \
-e "KONG_DATABASE=postgres" \
-e "KONG_PG_HOST=kong-database" \
-e "KONG_PG_USER=kong" \
-e "KONG_PG_PASSWORD=kong" \
-e "KONG_CASSANDRA_CONTACT_POINTS=kong-database" \
-e "KONG_PROXY_LISTEN=0.0.0.0:8000, 0.0.0.0:8443 ssl" \
-e "KONG_ADMIN_LISTEN=0.0.0.0:8001, 0.0.0.0:8444 ssl" \
-e "KONG_ADMIN_SSL_CERT=/path/to/ssl_cert.pem" \
-e "KONG_ADMIN_SSL_CERT_KEY=/path/to/ssl_cert_key.pem" \
-v /path/to/ssl_cert.pem:/path/to/ssl_cert.pem \
-v /path/to/ssl_cert_key.pem:/path/to/ssl_cert_key.pem \
-p 8000:8000 \
-p 8443:8443 \
-p 8001:8001 \
-p 8444:8444 \
kong:latest
```
确保将`/path/to/ssl_cert.pem`和`/path/to/ssl_cert_key.pem`替换为您实际的证书路径。
6. 配置HTTP重定向:为了将HTTP请求重定向到HTTPS,您需要在Kong中添加一个插件。运行以下命令来添加一个重定向插件:
```
$ docker exec -it kong kong config db_import /etc/kong/kong.yml
$ docker exec -it kong kong plugins enable request-transformer
```
7. 更新Kong配置:运行以下命令来更新Kong的配置并添加HTTP重定向规则:
```
$ docker exec -it kong curl -X POST http://localhost:8001/services \
--data name=http-to-https \
--data protocol=http \
--data host=your-domain.com \
--data port=80
$ docker exec -it kong curl -X POST http://localhost:8001/services/http-to-https/routes \
--data protocols=https \
--data hosts=your-domain.com \
--data paths='/' \
--data name=http-to-https-route
$ docker exec -it kong curl -X POST http://localhost:8001/routes/http-to-https-route/plugins \
--data "name=request-transformer" \
--data "config.add.headers[0]=X-Forwarded-Proto: https"
```
请将`your-domain.com`替换为您实际的域名。
完成上述步骤后,当收到HTTP请求时,Kong将自动将其重定向到相应的HTTPS URL。请确保将SSL证书正确配置,并将`your-domain.com`替换为实际的域名。
阅读全文