HKC / Linux / synology · 2024年 4月 2日 0

docker安装nginx支持HTTP文件服务器或者webdav

什么是nginx?

Nginx(发音为“engine-x”)是用于 HTTP、HTTPS、SMTP、POP3 和 IMAP 协议的开源反向代理服务器,以及负载均衡器、HTTP 缓存和 Web 服务器(源服务器)。nginx 项目一开始就非常注重高并发、高性能和低内存使用率。它以 2 条款类 BSD 许可证授权,可在 Linux、BSD 变体、Mac OS X、Solaris、AIX、HP-UX 以及其他 *nix 版本上运行。它还具有用于 Microsoft Windows 的概念验证端口。

在 nginx 配置中使用环境变量(1.19 中的新功能)

开箱即用,nginx 不支持大多数配置块中的环境变量。但是这个镜像有一个函数,它会在 nginx 启动之前提取环境变量。

下面是一个使用 docker-compose.yml 的示例:

web:
  image: nginx
  volumes:
   - ./templates:/etc/nginx/templates
  ports:
   - "8080:80"
  environment:
   - NGINX_HOST=domain.com
   - NGINX_PORT=80

这些是您可以设置的环境变量,以及它们的作用。(编译安装nginx支持webdav模块的情况下)

  • PUID=1000具有对卷的读/写访问权限的用户 ID。Nginx 将使用相同的方法来读取/写入文件夹。./path/to/dir:/data
  • PGID=1000对卷具有读/写访问权限的组 ID。Nginx 将使用相同的方法来读取/写入文件夹。./path/to/dir:/data
  • TZ=Asia/Shanghai指定底层 GNU/Linux 系统的时区。
  • WEBDAV_USERNAME=user设置单个用户名以访问 WebDAV。如果未设置,则忽略,如果提供,则忽略。WEBDAV_PASSWORD/config/nginx/htpasswd
  • WEBDAV_PASSWORD=password将密码设置为访问 WebDAV 的单个用户名。如果未设置,则忽略,如果提供,则忽略。WEBDAV_USERNAME/config/nginx/htpasswd
  • SERVER_NAMES=localhost,ineed.coffee服务器的主机名以逗号分隔。
  • TIMEOUTS_S=1200表示为秒,同时设置各种 nginx 超时:、、、。send_timeoutclient_body_timeoutkeepalive_timeoutlingering_timeout
  • CLIENT_MAX_BODY_SIZE=120M将文件上传大小限制为表示的值,该值必须以 (egabytes) 或 (igabytes) 结尾。MG

1、下载镜像

打开container manager→注册表→搜索并下载:nginx

2、创建容器

打开container manager→映像→选择nginx并运行

设置外部端口

映射容器文件夹:

/public    /data    #public是要共享的目录,data是容器内要配置共享的目录,后边配置文件中需要用到data。

映射配置文件:

/docker/nginx/conf/default.conf    /etc/nginx/conf.d/default.conf

#docker/nginx/conf/default.conf    是本地default.conf存放目录

#/etc/nginx/conf.d/default.conf    是容器内default.conf存放目录

可以直接下载我编译的好的直接使用,也可自行编译。default.conf

直接点下一步,完成配置并启动容器。

3、直接访问192.168.x.x:30080/share

4、default.conf配置内容

server {

listen       80;

server_name  localhost;

 

#access_log  /var/log/nginx/host.access.log  main;

location / {

root   /usr/share/nginx/html;

index  index.html index.htm;

}

#error_page  404              /404.html;

# redirect server error pages to the static page /50x.html

#

error_page   500 502 503 504  /50x.html;

location = /50x.html {

root   /usr/share/nginx/html;

}

#设置需要共享的信息

location ^~ /share {    #share是域名后的路径,

alias /data/; #容器内共享文件路径

autoindex on; # 开启索引功能

autoindex_exact_size off; # 关闭计算文件确切大小(单位bytes),只显示大概大小(单位kb、mb、gb)

autoindex_localtime on; # 显示本机时间而非 GMT 时间

charset utf-8; #避免中文乱码

}

# proxy the PHP scripts to Apache listening on 127.0.0.1:80

#

#location ~ \.php$ {

#    proxy_pass   http://127.0.0.1;

#}

# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000

#

#location ~ \.php$ {

#    root           html;

#    fastcgi_pass   127.0.0.1:9000;

#    fastcgi_index  index.php;

#    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;

#    include        fastcgi_params;

#}

# deny access to .htaccess files, if Apache’s document root

# concurs with nginx’s one

#

#location ~ /\.ht {

#    deny  all;

#}

}

5、nginx配置HTTP文件服务器需要添加的参数

#设置需要共享的信息

location ^~ /share {    #share是域名后的路径,

alias /data/; #容器内共享文件路径

autoindex on; # 开启索引功能

autoindex_exact_size off; # 关闭计算文件确切大小(单位bytes),只显示大概大小(单位kb、mb、gb)

autoindex_localtime on; # 显示本机时间而非 GMT 时间

charset utf-8; #避免中文乱码

}

赞赏

微信赞赏支付宝赞赏