保留 url 中的端口 (nginx)

保留 url 中的端口 (nginx)

我正在尝试运行 nginx 服务器来显示一些文件夹,以便用户可以看到他们的内容并下载文件。但我希望 nginx 在 docker 容器内监听端口 80,但在外部则监听 server.com:1080。该外部路由已设置。

欢迎页面有效,但是当我通过server.com:1080/folderurl 访问该文件夹时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;
}

相关内容