docker-nginx静态资源目录配置

  1. 背景
  2. 遇到问题
    1. 访问403
    2. 访问404

背景

有一台阿里云服务器,在上面使用了docker创建了nginx服务器。现需要将mp4文件放到服务器上,然后通过nginx静态资源目录配置,实现通过浏览器播放mp4文件。

遇到问题

访问403

  • 原因: nginx是由root用户启动,查看进程发现worker进程是nobody用户,nginx下的静态文件worker进程没有访问权限。
  • 解决方法:修改nginx配置文件conf/nginx.conf,将user配置修改与启动用户一致。
    user root;
    worker_processes  auto;

访问404

  • 背景:nginx的docker-compose.yml
    version: '3'
    services:
      nginx:
          image: nginx
          container_name: nginx
          restart: always
          ports:
            - '80:80'
            - '443:443'
          volumes: 
            - ./conf/nginx.conf:/etc/nginx/nginx.conf
            - ./conf.d:/etc/nginx/conf.d
            - ./html:/usr/share/nginx/html
            - ./logs:/var/log/nginx
  • 原因: nginx 配置中,alias 后面的目录配置成了宿主机的映射目录
  • 解决方法:alias 后面的目录要配置成nginx容器内的路径
    location ^~/static/ {
         # 注意这里静态资源文件路径,是docker创建的nginx容器内的路径,而不是宿主机映射的路径
         alias /usr/share/nginx/html/;
         
         autoindex on;
         autoindex_exact_size on;
         autoindex_localtime on;
         charset utf-8;
    }

转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。
My Show My Code