可以在docker端口后添加前缀

时间:2017-09-27 14:00:15

标签: docker nginx dockerfile nginx-reverse-proxy

我正在使用docker容器来托管我的angular 4项目。我有nginx服务器中介我的客户端和我的API。没有找到像使用localhost / coffee这样的东西访问我的前端的方法。

而不是推荐的访问docker的方式 127.0.0.1:9000

docker run -p 9000:80 image

我能用这种方式做到这一点 127.0.0.1:9000/coffee 之后

docker run -p 9000/coffee:80 image.

我可以访问在实时服务器上的端口9000上打开的位置localhost / coffee。我需要在暴露的端口docker端口上添加前缀coffee。

3 个答案:

答案 0 :(得分:3)

您不能在docker port之后添加前缀。您只能映射端口。 要访问像localhost / coffee这样的前端,您可以配置nginx来处理这种情况(将位置配置为/ coffee和代理请求到您的后端服务器)。

答案 1 :(得分:0)

@Girdhar Sojitra是对的。您需要使用nginx作为反向代理。我想补充一些通知。 Jwilder nginx-proxy可以为每个后端自动配置子域。

答案 2 :(得分:0)

端口和请求网址是两回事。端口用于网络通信,请求URL用于网络服务器。所以当你运行

docker run -p 9000:80 image

如果您要在localhost:9000上投放应用,并且需要将其更改为localhost:9000/coffee,则此更改需要包含在您的代码或网络服务器配置中,而不是在docker run命令中。

一个简单的nginx配置

http{
server {
   listen 80;

   location /coffee/ {
       proxy_pass http://yourbackendcontainer:backendport/;
   }
}

如果您还需要将/coffee/作为网址的一部分传递给后端,那么您可以将配置更改为以下

http{
server {
   listen 80;

   location /coffee {
       proxy_pass http://yourbackendcontainer:backendport;
   }
}