on
폐쇄망 Redhat 에서 Nginx 설치
이 글은 Redhat OS 환경 상에서 패키지 관리자를 사용하지 않고 Nginx 를 설치하는 과정을 남긴 포스팅 입니다.
Nginx 다운로드
폐쇄망 환경상에서는 일반적인 인터넷망과 달리 패키지 관리자를 활용한 설치는 진행할 수 없고 wget 통한 다운로드도 불가능 합니다.
저는 인터넷망에 접근 가능한 로컬 PC 에서 구글링 통해 아래 Nginx 공식 홈페이지에서 제공하는 다운로드 링크에 접근하였고 현 시점에서 최신 Stable version 인 v1.24.0 을 다운 받았습니다.
https://nginx.org/en/download.htmll
제 로컬 PC 에서 다운받은 파일명은 nginx-1.24.0.tar
입니다.
이제 이 파일을 인터넷망에서 폐쇄망으로 옮길 수 있는 사내 정식 절차를 통해 폐쇄망으로 이관해 줍니다.
저의 경우 망분리 솔루션을 통한 승인 절차 통해 다운받은 파일을 폐쇄망에 접근 가능한 로컬 PC 로 이관 하였습니다.
다음으로 폐쇄망에 넙근 가능한 로컬 PC 에서 다운받은 파일을 설치가 필요한 서버에 SFTP (저는 Filezilla 를 주로 사용합니다.) 로 전송 하였습니다.
마지막으로 다운받은 파일의 압축을 해제해 줍니다.
$ tar -xvf path/to/nginx-1.24.0.tar
$ ls
nginx-1.24.0 nginx-1.24.0.tar.gz
서드 파티 모듈 headers-more-nginx-module 다운로드
위와 동일한 방식으로 저는 추가 서드 파티 모듈도 다운받아 보고자 합니다.
제가 다운받고자 하는 추가 서드 파티 모듈은 headers-more-nginx-module 입니다.
“headers-more-nginx-module”을 사용하면 Nginx 의 설정을 통해 서버 정보나 서버 버전 정보를 응답 헤더에서 제거하거나 수정할 수 있습니다. 이를 통해 공격자에게 서버 정보를 노출하지 않고 보다 안전한 서버 운영이 가능합니다.
해당 모듈의 공식 github 과 버전별 다운로드 링크는 아래와 같으며, 현 시점에서 최신 버전인 v0.37 을 다운 받았습니다.
https://github.com/openresty/headers-more-nginx-module
https://github.com/openresty/headers-more-nginx-module/tags
제 로컬 PC 에서 다운받은 파일명은 headers-more-nginx-module-0.37.tar
입니다.
다시 동일한 과정을 거쳐 압축 해제까지 진행해 줍니다.
$ tar -xvf path/to/headers-more-nginx-module-0.37.tar
$ ls
headers-more-nginx-module-0.37 headers-more-nginx-module-0.37.tar nginx-1.24.0 nginx-1.24.0.tar.gz
Nginx 의 설치 ( configure & make & install )
이제 Nginx 를 빌드하고 설치해 보도록 하겠습니다.
Nginx 를 빌드하기 전에 configure 명령어를 사용하여 빌드 옵션을 설정합니다.
이때 –add-module 옵션을 사용하여 headers-more-nginx-module 의 경로를 지정해주어야 합니다.
또한 저는 /path/to 경로에 Nginx 를 설치할 것이기 때문에 —prefix ${설치경로} 옵션을 사용하여 설치 경로를 지정하겠습니다.
이를 통해 시스템 전역에 영향을 미치지 않고 특정 디렉토리에 소프트웨어를 설치할 수 있습니다.
$ cd path/to/nginx-1.24.0
$ ./configure --add-module=/path/to/headers-more-nginx-module-0.37 --prefix=/path/to/install
다음으로 configure 명령어를 실행한 후에는 make 명령어를 사용하여 Nginx 를 빌드합니다.
make
마지막으로 make install 명령어를 사용하여 빌드된 Nginx 를 시스템에 설치합니다.
$ make install
$ cd /path/to/install
$ ls
conf html logs sbin
최종적으로 prefix 옵션으로 지정한 경로에 Nginx 의 홈폴더가 구성되었음을 확인할 수 있습니다.
Nginx 의 설정 및 실행
이제 Nginx 설치 후 존재하는 기본 nginx.conf 설정에서 headers-more-nginx-module 의 server 정보 비노출 설정만 추가해 준 후 실행하여 정상적으로 서드 파티 모듈 기반으로 싱행이 되는지 확인해 보겠습니다.
우선 nginx.conf 설정 파일 위치를 탐색해 봅니다.
$ cd /path/to/install/conf
$ ls
fastcgi.conf fastcgi_params.default mime.types nginx.conf.default uwsgi_params
fastcgi.conf.default koi-utf mime.types.default scgi_params uwsgi_params.default
fastcgi_params koi-win nginx.conf scgi_params.default win-utf
이제 nginx.conf 설정 파일 상에 headers-more-nginx-module 관련 설정을 추가하여 서버 정보를 응답 헤더상에서 제외해 보겠습니다.
...
http {
...
more_set_headers 'Server: None';
...
server {
listen 8080;
...
}
}
...
이제 서비스를 실행해보겠습니다.
$ cd /path/to/install/bin
$ ./nginx
마지막으로 정상적으로 실행되었는지 확인하려면 브라우저 상에서 http://(대상 서버 IP):8080
으로 이동하여 index.html 인 Welcome to nginx! 가 보이는지 확인해 봅니다.
그리고 응답 header 상에서 서버 정보가 위에서 설정한 None 으로 표시되고 있는지 확인해 봅니다.