测试机器为一个debian的lxd容器,本地安装nginx
默认配置文件在/etc/nginx/nginx.conf
文件下,保持配置文件不修改,确保include /etc/nginx/conf.d/*.conf
未被注释,默认是有的。
基本配置
使用虚拟主机,在/etc/nginx/conf.d/
文件夹下添加如下download.conf
配置文件
server {
listen 80;
# 访问日志
access_log /var/log/nginx/d_access.log;
# 错误日志
error_log /var/log/nginx/d_error.log;
# 存放文件的目录
root /var/www/html;
location / {
# 开启文件索引
autoindex on;
# 关闭文件的实际大小on为bytes,off为M、K、G单位
autoindex_exact_size off;
# 默认为off,显示的文件时间为GMT时间,on为本地时间
autoindex_localtime on;
# 修复中文乱码
charset utf-8,gbk;
}
}
运行nginx -t
检测配置是否准确
systemctl start nginx.service
启动服务,现在浏览器输入http://ip
会列出/var/www/html
目录下的文件问题。
使用远程smb共享文件夹
说明下如何使用远程smb共享文件夹作为下载站根目录。
挂载smb远程文件夹
mount -t cifs -o uid=www-data,gid=www-data,ro,username=用户名,password=密码,vers=2.0 //远程服务器ip/文件夹 本地挂载路径
注意
- uid=www-data,gid=www-data必须加,否则会报403错误
- 群晖需要指定smb版本,加参数vers=2.0,其他系统可以不加
修改download.conf文件中的路径为挂载路径,重启nginx即可。
问题
挂载smb报权限错误
mount.nfs: Operation not permitted
因为容器是非特权容器,在容器内使用root并不是真正的特权用户,因此仍然无法挂载NFS文件系统,CIFS也是一样的问题。
解决办法:将容器设置为特权容器:
$ lxc config set container raw.lxc "lxc.apparmor.profile=unconfined"
$ lxc config set container security.privileged true
$ lxc restart container
pve需要在创建容器的时候指定特权用户,即不要勾选unprivileged container
参考
https://fythonfang.com/blog/post/3
https://michalkowol.github.io/posts/2016-11-07-nginx-cifs/
https://openwares.net/2019/10/24/lxd-container-mount-nfs-cifs/