사용자가 해당 내용을 보고 파일을 다운로드할 수 있도록 일부 폴더를 표시하기 위해 nginx 서버를 실행하려고 합니다. 하지만 nginx가 docker 컨테이너 내부의 포트 80에서 수신 대기하지만 server.com:1080 외부에서는 수신 대기하기를 원합니다. 외부 경로가 설정되었습니다.
시작 페이지는 작동하지만 server.com:1080/folder
url을 통해 폴더에 액세스 하면 server.com:80/folder
"이 주소에 연결할 수 없습니다" 페이지가 나타납니다. 저는 Nginx를 처음 접했기 때문에 server_name을 변경하고 Proxy_pass를 추가하는 등의 의미를 제대로 이해하지 못한 채 몇 가지 작업을 시도했지만 제대로 작동하지 못했습니다. 아마도 이 상황에 대한 특정 용어를 모르기 때문에 Google에서 일치하는 솔루션을 찾을 수 없을 수도 있습니다.
답변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;
}