nginx 파일 다운로드시 경로처리

뭐하시는 분이세요?·2022년 9월 5일
0

앱은 웹보다 배포가 까다롭기때문에, apk파일을 받을수있는 웹페이지를 만들고 이를 배포하여 내부에서 테스트 용도로 사용하기로 했다. 생각처럼 경로처리가 잘 안되어서.. 까먹기 전에 정리

1. 서버에 파일 (index.html, apk) 업로드

앱 api용으로 띄워져 있는 node 서버(9999번 포트)에서 다운로드 페이지를 서빙하도록 구성했다.

index.html 파일의 경로는 /production/index.html

(직접 nginx에서 html 파일을 서빙하도록 설정해도 무관)

// index.js (express서버 entry file)
app.set("views", __dirname + "/production");
app.set("view engine", "ejs");
app.engine("html", require("ejs").renderFile);

app.get("/app", (req, res) => {
  res.render("index.html");
});
 

2. nginx 설정

index.html 파일의 한글 렌더링, apk파일 다운로드용 링크 설정을 위해
nginx 설정파일에 아래 내용을 추가해준다.

server {
    listen 80;
    charset utf-8; # index.html 한글 인코딩을 위해서 넣어줌
  
	#1
    location /app {
    	proxy_pass http://localhost:9999;
    }
	
	#2
    location /apk {
    	alias /etc/nginx/app_api/production/;
    }
}
  • 테스트도메인/app 로 들어오는 요청을 노드서버가 처리하기 위해 9999번 포트로 프록싱. 그럼 9999번 포트에서 GET /app 요청에 대한 응답으로 index.html페이지 렌더링한다.

  • apk파일의 경로를 alias 해준다. 그래야 웹페이지에서 경로로 접근할 수 있다.
    (테스트도메인/apk -> /etc/nginx/app_api/production/ )
    앱apk파일(test.apk)의 경로는 /production/test.apk

3. 페이지용 html 작성시 파일(apk)의 경로 설정

a 태그의 href에 apk파일의 경로를 적으면, 태그를 클릭시 download 옵션에 넘겨준 이름(test.apk)으로 파일이 다운로드 된다.

<a href="http://테스트도메인/apk/test.apk" download="test.apk">앱 다운로드(v1.0.0)</a>
profile
이것저것 개발하지만 프론트엔드 개발이 제일 좋아요 👩🏻‍💻

0개의 댓글