以 portainer 为例

使用的是默认网络

会导致代理的时候不能写loaclhost/127.0.0.1 必须写容器内容IP(172.x.x.x)

  1. location / {
  2. proxy_pass http://172.18.0.1:9000/;
  3. proxy_set_header Via "nginx";
  4. proxy_set_header Host $host;
  5. proxy_set_header X-Real-IP $remote_addr;
  6. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  7. proxy_set_header X-Forwarded-Port $server_port;
  8. }

使用 network_mode: "host"

在 nginx的compose中加入 network_mode: "host"就可以规避上述问题

  1. location /portainer/ {
  2. proxy_pass http://localhost:9000/;
  3. proxy_set_header Via "nginx";
  4. proxy_set_header Host $host;
  5. proxy_set_header X-Real-IP $remote_addr;
  6. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  7. proxy_set_header X-Forwarded-Port $server_port;
  8. }