- 4
- NUBE
- 조회 수 228
대충 Nginx 로그 분석 html에 대한 접근 권한을 설정하고 싶다는 내용이었습니다.
YGL님 과 OAUTH2님 이 제시해주신 방법 둘 다 좋은 방법이라고 생각이 들었습니다.
우선 OAUTH2님이 알려주신 방법이 조금 더 편해보여서 먼저 해봤습니다.
Nginx http auth request 모듈을 사용하면 보호하고 싶은 경로에 대한 접근 권한을 다른 경로에서의 인증을 통해 설정할 수 있습니다.
인증 경로에서 2xx 응답 코드가 발생하면 성공한 것이고 그 외의 응답 코드는 접근이 거부됩니다.
제 경우 보호하고 싶은 경로와 인증을 진행할 경로는 아래와 같습니다.
보호하고 싶은 html = https://도메인.com/log/report.html
html의 원래 경로 = /var/www/log
인증을 진행할 경로 = https://도메인.com/admin
관리자 권한이 없는 계정이 https://도메인.com/admin에 접속하면 로그인 페이지로 redirect 되기 때문에 3xx 응답 코드가 발생합니다.
nginx 서버 블록에 아래의 내용을 추가해줬습니다.
location ^~ /log {
auth_request /auth;
alias /var/www/log;
}
location = /auth {
internal;
proxy_pass https://도메인.com/admin;
}
https://도메인.com/log 경로로 접속하면 https://도메인.com/auth (=https://도메인.com/admin)에서 인증을 진행합니다.
인증에 성공하면 https://도메인.com/log 경로는 서버의 /var/www/log 폴더로 연결됩니다.
이렇게 설정하고 확인을 해보니 관리자 계정에서는 https://도메인.com/log/report.html이 정상적으로 출력되고, 비회원으로 접근하면 500 Internal Server Error가 출력됩니다.
일단 문제가 해결됐으니 YGL님이 알려주신 fs 모듈을 통한 방법은 아직 해보진 않았지만 그 방식이 더 나을 것 같아 좀 더 알아보고 있습니다.
질문글의 댓글에서 말한 것처럼 iframe을 넣은 페이지는 플러그인을 통해 생성한 페이지입니다.
아무래도 플러그인에서 로컬 파일을 직접 불러오는 것이 더 안전할 것 같은데, 해당 플러그인에서 로컬 html을 불러올 경우 새로 생성하는 모든 페이지에서 html을 불러오기 때문에 로그 분석을 위한 별도의 플러그인을 새로 만들고 있습니다.
특정 페이지만 인식하는 내용을 추가해주면 해결될 거 같긴 한데.. 새로 만드는게 더 쉬울 것 같더라구요..ㅎㅎ...