Nginx Docker容器在不同位置提供相同的静态文件

时间:2019-07-08 07:45:27

标签: docker nginx docker-compose containers

我正在使用Nginx docker容器提供静态文件。我已经挂载了要服务的目录。我想在不同的位置提供相同的目录。考虑使用百胜镜的用例。 7.3.1611中的软件包也应在7.3中使用。

最初,我尝试创建符号链接,将7.3.1611链接到7.3,但是由于docker容器不处理符号链接,因此Nginx不提供链接目录。 我要尝试的第二件事是在Nginx中的不同位置提供相同的目录。但这也行不通,我得到404。

这是示例nginx.conf

server {
    listen 80;

    server_name _;

    # Enable symlinks for follow up
    disable_symlinks off;

    location /yum/7.3 {
        alias /opt/mirror/yum/7.3;

        auth_basic            "Yum Repository";

        index  index.php index.html index.htm;
        autoindex on;   #enable listing of directory index
    }

    location /yum {
        root /opt/mirror;

        auth_basic            "Yum Repository";

        index  index.php index.html index.htm;
        autoindex on;   #enable listing of directory index
    }

    location / {
      return 412;
    }
}

docker-compose.yml看起来像这样

version: '3.1'

services:
  nginx:
    image: nginx
    # command: "/bin/bash -c exec nginx -g 'daemon off;'"
    restart: always
    volumes:
      - "/home/admin/nginx_root.conf:/etc/nginx/nginx.conf"
      - "/tmp/mirror:/opt/mirror/yum"
    ports:
      - 25000:80
$ ls -l /tmp/mirror
drwxr-xr-x 3 root root 4096 Jul  4 06:51 7.3.1611
drwxr-xr-x 2 root root 4096 Jul  4 06:52 7.4.1804
drwxr-xr-x 2 root root 4096 Jul  4 06:52 7.5.1804
drwxr-xr-x 3 root root 4096 Jul  4 07:07 7.6.1810

当我访问http://localhost:25000/yum/7.3.1611/时,此方法工作正常。 但是http://localhost:25000/yum/7.3/给出404。

现在,当我显式安装 /tmp/mirror/7.3.1611:/opt/mirror/yum/7.3 时, 这个http://localhost:25000/yum/7.3/可以正常工作。但我不想保留 挂载每个这样的目录。

任何帮助将不胜感激。预先感谢。

0 个答案:

没有答案