为什么我的docker里面的nginx虚拟主机不工作?

为什么我的docker里面的nginx虚拟主机不工作?

我正在将我的服务从虚拟机移至 Docker 容器。我已经移动了几个 Web 应用程序,确认它们可以正常工作,最后决定移动我的 nginx。

将 nginx 移至 docker 后,我的所有 webapps 均无响应。我已确认,nginx 虚拟主机不起作用。只有使用 IP 地址访问时,默认配置才有效。它似乎无法获取有关请求中使用的域的详细信息。

我的虚拟主机配置示例:

server {
  listen 80;
  server_name my_domain.eu;
  access_log  /var/log/nginx/my_domain.eu.access.log;
  error_log /var/log/nginx/my_domain.eu.error.log;
  location / {
    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-Host $host;
    proxy_set_header X-Forwarded-Server $host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_pass http://192.168.88.196:8080;
  }
  error_page 500 502 503 504 /default.html;
  location ~* /default\.(jpg|html)$ {
    root /var/www/tomcat/errors;
  }
}

我的 docker 使用 macvlan 驱动程序配置了自定义网络。我的所有容器都有一个静态 IP 地址。我使用默认的 nginx docker 镜像。以下是文件的相关部分docker-compose.yml

  nginx:
    container_name: nginx
    image: nginx
    volumes:
      - nginx_config:/etc/nginx/
      - nginx_static:/var/www/
    networks:
      pub_net:
        ipv4_address: 192.168.88.193
    ports:
      - "80:80"
    restart: on-failure

正如我所说,我已经通过检查日志和使用 IP 地址访问服务器确认 nginx 正常工作。

我怀疑我的 docker 配置有些问题,因为我所做的唯一更改是没有更改 nginx 配置。如果您能提供任何提示和技巧,告诉我哪里可能出错以及应该查看哪里,我将不胜感激。

配置流量时,我总是使用容器的 IP 地址,而不是主机的 IP 地址。

相关内容