最新消息: 电脑我帮您提供丰富的电脑知识,编程学习,软件下载,win7系统下载。

通过docker host对nginx映射路由,为每个路由调用不同的容器

IT培训 admin 7浏览 0评论

通过docker host对nginx映射路由,为每个路由调用不同的容器

我正在尝试通过docker host映射路由,为每个路由调用不同的容器。

我有一个docker-compose有2个服务,而且服务是: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

要修复该错误,添加到nginx,conf映射/路由:

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 /导致错误的路由。

回答如下:

试试这个:

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://$server_name:8080/swaggerUi;
        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 /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;
    }
}

通过docker host对nginx映射路由,为每个路由调用不同的容器

我正在尝试通过docker host映射路由,为每个路由调用不同的容器。

我有一个docker-compose有2个服务,而且服务是: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

要修复该错误,添加到nginx,conf映射/路由:

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 /导致错误的路由。

回答如下:

试试这个:

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://$server_name:8080/swaggerUi;
        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 /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;
    }
}
发布评论

评论列表 (0)

  1. 暂无评论