【发布时间】:2017-12-22 15:56:33
【问题描述】:
我正在尝试通过 docker 主机映射路由,对于每个路由,调用不同的容器。
我有一个带有 2 个服务的 docker-compose,该服务位于 :5000 端口。我的 nginx.conf 映射如下代码:
location /template-api {
rewrite ^/template-api/?(.*) /$1 break;
proxy_pass http://template-api:5000;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $server_name;
}
location /api-plan {
rewrite ^/api-plan/?(.*) /$1 break;
proxy_pass http://api-plan:5000;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $server_name;
}
什么时候,我调用 localhost:8000/api-template/documentation,调用静态文件的路由,或者返回静态文件的路由。他在 localhost:8000/swaggerui 中返回错误,找不到文件。 发生该错误是因为 swagger ui 文件夹位于 localhost:8000/api-template/swaggerui 和 localhost:8000/api-plan/swaggerui
为了修复这个错误,我添加到 ngix 中,配置映射 / 路由:
server {
listen 8000;
access_log /var/log/nginx/api.log;
error_log /var/log/nginx/api_error.log;
server_name localhost;
location / {
proxy_pass http://api-plan:5000;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $server_name;
}
现在当我调用 localhost:8000/api-plan/documentation 时,会成功,但是,当我调用 localhost:8000/template-api/documentation 时,API 会重定向到 localhost:8000/api-plan/ 导致路线错误。
【问题讨论】:
-
你不能只创建两个不同的位置而不是根路由 / 吗?
-
如果,我删除那个位置,当浏览器调用 localhost:5000/swagger 时,他不明白必须在哪里寻找静态文件:/
-
如果您保留 3 个不同的位置,事件?静态文件的根位置和这些 swaggerui 端点的另外 2 个位置。我认为这会工作
-
是的!我认为在这种可能性中,我正在寻找我是如何做这件事的哈哈哈
标签: node.js docker nginx routes nodes