什么是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_timeout
client_body_timeout
keepalive_timeout
lingering_timeout
CLIENT_MAX_BODY_SIZE=120M
将文件上传大小限制为表示的值,该值必须以 (egabytes) 或 (igabytes) 结尾。M
G
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 {
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:8000
#
#location ~ \.php$ {
# root html;
# fastcgi_pass 127.0.0.1:8000;
# 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文件服务器需要添加的参数
设置需要共享的信息
server {
listen 80;
server_name localhost;
# 下载
location /share { # share为域名后路径(例:xxx.com/share)
charset utf-8; # 避免中文乱码
root /home/downloads; # 文件存放目录(root 适合简单路径拼接;alias用于路径替换)
autoindex on; # 启用自动首页功能
autoindex_exact_size off; # 关闭计算文件确切大小(单位bytes),只显示大概大小(单位kb、mb、gb)
autoindex_localtime on; # 显示本机时间而非 GMT 时间
default_type application/octet-stream;# 将当前目录中所有文件的默认MIME类型设置为
# application/octet-stream
if ($request_filename ~* ^.*?\.(txt|doc|pdf|rar|gz|zip|docx|exe|xlsx|ppt|pptx)$){
# 当文件格式为上述格式时,将头字段属性Content-Disposition的值设置为"attachment"
add_header Content-Disposition: 'attachment;';
}
autoindex_format html; # 首页格式为HTML
sendfile on; # 开启零复制文件传输功能
sendfile_max_chunk 1m; # 每个sendfile调用的最大传输量为1MB
tcp_nopush on; # 启用最小传输限制功能
# aio on; # 启用异步传输
directio 5m; # 当文件大于5MB时以直接读取磁盘的方式读取文件
directio_alignment 4096; # 与磁盘的文件系统对齐
output_buffers 4 32k; # 文件输出的缓冲区大小为128KB
# limit_rate 1m; # 限制下载速度为1MB
# limit_rate_after 2m; # 当客户端下载速度达到2MB时进入限速模式
max_ranges 4096; # 客户端执行范围读取的最大值是4096B
send_timeout 20s; # 客户端引发传输超时时间为20s
postpone_output 2048; # 当缓冲区的数据达到2048B时再向客户端发送
chunked_transfer_encoding on; # 启用分块传输标识
}
}
赞赏
微信赞赏
支付宝赞赏