近期需要频繁从远程服务器下载文件, 中间隔着堡垒机, 跳板机, 操作起来有些不方便, 于是就在nginx上开放了一个上下文用于文件下载, 但是也踩了坑, 下面分享一下整个过程:
1. 建立文件目录
我用的nginx是通过yum安装的
mkdir /usr/share/nginx/html/deo
2. 配置文件
vi /etc/nginx/conf.d/default.conf
添加上下文:
location /deo/ {
alias /usr/share/nginx/html/deo/;
autoindex on;
autoindex_exact_size off;
autoindex_localtime on;
add_header Cache-Control no-store;
}
3. 重新加载nginx配置文件
nginx -s reload
4. 测试(开始踩坑)
使用浏览器访问, 结果却是大大的403 FORBIDDEN:
查看error.log有如下日志:
2021/01/13 16:34:42 [error] 5095#5095: *1 "/usr/share/nginx/html/deo/index.html" is forbidden (13: Permission denied), client: 123.11.13.29, server: localhost, request: "GET /deo/ HTTP/1.1", host: "29.143.12.134"
得知是由于权限问题, 检查nginx的运行用户:
接下来的操作思路就很清晰了: 修改deo目录的权限或者更改nginx worker的运行账户, 我选择的是后者
vi /etc/nginx/nginx.conf
在文件开头部分:
#user nginx;
user root;
5. 重启服务测试
systemctl restart nginx
使用浏览器访问:
注意,如果提示directory index of "/usr/share/nginx/deo/" is forbidden,需要排查一下关联的配置文件中是否出现了多组location /,只保留具体站点的一个文件内的location /即可。