nginx,访问内部网络上的其他服务器

时间:2019-11-29 11:30:01

标签: docker nginx

我有一个运行此配置的docker网络(来自docker-compose.yaml):

    networks:
      network:
        driver: bridge
        ipam:
          driver: default
          config:
            - subnet: 172.28.1.0/24

(我的网络称为网络)

我有一个Angular前端在此网络上的容器中运行(172.28.1.4)。前端Web服务器是Nginx服务器。

我希望从Web服务器上调用各种后端(身份验证和数据库)直接转到这些服务器,而不必将它们暴露给外界。

即对用户进行身份验证,如下所示:httpClient.post('172.28.1.5:8080/_user/login',凭据)

我相信应该在nginx配置中完成此操作,但是对于如何允许从nginx访问172.28.1.5而又不暴露172.28.1.5,我一无所知

从Docker的角度来看,服务器彼此可见

我已经尝试使用反向代理,并且可以,但是我不能阻止从外部ips访问该位置

    location ~/_user(/.*)*/?$ {
        proxy_pass         http://auth_server:8080; //auth_server points to 172.28.1.5
        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;
    }

代理设置。我已经更改了服务器的名称,以阐明它们在网络中的角色。 前端可以像这样调用database_server:

http://external.ip.address:443/_api/any_path 不幸的是,其他人也可以:)

        server {
            listen 443;
            server_name localhost;

            location ~/_user(/.*)*/?$ {
                proxy_pass         http://authentication_server:8080;
                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(/.*)*/?$ {
                proxy_pass         http://database_server:80;
                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 ~/ {
                proxy_pass         http://ui_frontend_server:8080;
                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设置使之成为可能,因为它将名称“ authentication_server”映射为172.28.1.3

        authentication_server_service:
            container_name: authentication_server
            build: ../authentication_server/
            image: authentication_server_image:latest
            networks:
            network:
                ipv4_address: 172.28.1.3

0 个答案:

没有答案