我正在尝试运行 nginx 服务器来显示一些文件夹,以便用户可以看到他们的内容并下载文件。但我希望 nginx 在 docker 容器内监听端口 80,但在外部则监听 server.com:1080。该外部路由已设置。
欢迎页面有效,但是当我通过server.com:1080/folder
url 访问该文件夹时server.com:80/folder
,会显示“无法连接到该地址”页面。我对 Nginx 非常新手,所以我尝试了一些诸如更改 server_name 和添加 proxy_pass 之类的事情,但没有很好地理解它们的含义,但无法使其正常工作。也许我不知道这种情况的一些具体术语,因此无法谷歌匹配解决方案。
答案1
这可能不符合最佳实践,但在我看来,一种方法是将子目录重定向到根目录:
1-打开Nginx配置文件:
sudo vim /etc/nginx/nginx.conf
2-添加以下位置块:
location ^~ /folder {
rewrite ^/folder(.*)$ $1 last;
}
我确信您已经完成了此操作,因为您说欢迎页面工作正常,但是您确定已将主机端口正确映射到容器端口吗?
答案2
我发现folder/
链接基本上有效(不要更改端口)。唯一需要添加的是修复 403 Forbidden:autoindex on
现在它显示文件夹、子文件夹并允许文件下载。对我来说足够了。所以不需要其他技巧:
location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
try_files $uri $uri/ =404;
autoindex on;
}