태그 Archives: reverse proxy

nginx 리버스 프록시 웹서버에 awstats 설치 및 운영

WAS 기능이 없는 리버스 프록시 서버에서 awstats 를 설치를 하게 될경우 php 가 설치되어 있지 않기 때문에 오류가 발생 한다.

perl 은 설치가 되어 있기 때문에 awstats 배포 판의 받아 perl이 일정 시간 마다 html 문서를 일정 시간마다 갱신하도록 해서 사용 한다.

 

먼저 배포파일을 다운로드 받아 서버에 업로드 한다. https://awstats.sourceforge.io/#DOWNLOAD

 

awstats 플러그인중 3가지를 사용한다. 구글챠트API 는 별도 설치가 없다.

URI utf8 디코딩 및 geoip2 (.mmdb 파일) 사용을 위해 아래 방법 대로 설치 한다.

(perl-App-cpanminus 와 GeoIP2::Database::Reader 설치 할때 각각 약 100개 정도가 설치 된다.)

 

그 다음 awstats 의 콘피그를 실행 한다.

위 코드중 강조된 부분 은 문답 부분이며 사용하려는 사이트에 맞게 입력 값이 달라 질수 있다.

 

콘피그가 완료 되면 /etc/awstats/awstats.www.enteroa.com.conf 파일이 생성 된다.

해당 파일의 내용을 아래와 같이 수정 한다. (일부 기본적인 설정만 사용하도록 했음.)

 

분석 과 html 문서 서비스 제공에 필요한 폴더 를 생성하고 심볼릭링크를 생성한다.

 

아래 명령으로 access_log 를 분석 한다.

 

아래 명령으로 html 파일을 생성 한다.

 

새롭게 생성한 폴더에 웹접근이 가능하도록 selinux (fcontext) 설정을 한다.

 

nginx 에 http(:80) 가상호스트를 생성 한다.

 

Let’s encrypt 인증서를 생성 한다.

 

https(:443) 가상 호스트 설정을 추가 한다.

 

수집된 정보로 html을 계속 생성해줘야 하기 때문에 위의 html 생성 명령어를 스크립트로 작성 한다.

 

crontab -e 명령어로 일정 시간 마다 스크립트가 자동 실행 되도록 한다.

access_log 분석: 10분마다 || html 파일 생성: 매시 59분 마다.

 

분석 텀은 자유롭게 설정가능 하지만 할때 마다 자원을 소모 한다. 1분 마다 하면 문제 소지가 있겠다.

다만 분석 텀을 너무 길게 하면 분석할 데이터의 량이 증가 하기 작동 시간이 길이져 서버의 로드애버리지는 상승 시키는 문제가 생긴다.

때문에 웹서버 접속량에 따라 유동적으로 설정해야 한다.


PS. 기본적으로 awstats 의 경우 검색 엔진을 외국산은 잘 표현 하지만 국산 검색 포털은 표현해 주지 않는다.

이는 기본 제공 되는 브라우져 체크 라이브러리 파일에 /usr/local/awstats/wwwroot/cgi-bin/lib/search_engines.pm  한국의 검색 엔진이 없기 때문에…

한국 검색엔진은 기타에 포함 된다.

 

개인적으로 수정해서 쓰고 있는 search_engines.pm 파일을 아래 방법 대로 다운받아서 대체 하면 나온다. ‘ㅅ’a (naver, daum, nate, dreamwiz, korea.com)

 

Oracle Linux 8 (x86_64) 서버에서 dnf(yum)을 이용한 nginx 설치 및 http3 구현

아래 글은 오래 되어 도커 이미지 등이 삭제 되었으니 공부 차원이 아니라 이용을 하려면 아래 확인 하세요 ‘ㅅ’a

OCI arm 인스턴스에서 docker로 web, was 사용


OCI 에서 제공 되는 “항상 무료 적격” 서비스에 ARM64 서버로 Apache, Php, MariaDB 를 운영 하고자 하였으나

aarch64 커널에서는 snapd 설치가 가능하지만 lets encrypt 사용이 불가능 하여 불가피 하게 x86_64 서버를 앞에 하나 두어

reverse proxy 할 계획을 세우다 보니 HTTP/3 를 적용하는 부분도 포함해 진행 한다.

알고 가야 하는 부분은 http3 를 구현 하는 nginx-quic 의 경우 아직 테스트 레벨이라는 점이다.


tier 1 = x86_64 – oracle linux 8 – nginx

tier 2 = arm64 – oracle linux 8 – memcache, docker – amazon linux – httpd, php-fpm

tier 3 = arm64 – oracle linux 8 – mariadb


아래 두 글에 이어서 익숙하겠지만 그것을 한다.

 

편리한 dnf(yum) 설치를 위해 codeit.guru 레포지토리를 추가 한뒤에 nginx:codeit-quic 설치를 한다.

 

snapd 를 활용하여 Let’s encrypt 를 설치 한다.


웹서버의 보안 향상을 위해 Diffie-Hellman param 파일을 생성한다.

 

서버 내부의 파이어월에 사용할 서비스 및 포트를 등록 하고 확인 한다.

 

nginx.pid 생성, /var/www/html  엑세스(Let’s encrypt 인증서 http 인증) 및 리버스 프록시 구현을 위한 selinux 를 설정 한다.

 

OCI 클라우드 내에서의 보안 목록(Security List) 에서 아래와 같이 UDP :443 을 허용해 준다.

2022-05-12_121444


/etc/nginx/nginx.conf 파일을 수정 한다.

 

Let’s encrypt 인증서 발급을 위한 http 가상호스트를 수정 한다. vi /etc/nginx/conf.d/default.conf

conf 파일을 설정한 뒤 nginx 를 활성화 및 시작 한다.

 

Let’s encrypt 인증서를 발급 한다. (성공시 Successfully received certificate 메세지 가 확인 된다.)

 

https 가상호스트 설정 파일을 추가 생성 한다. vi /etc/nginx/conf.d/default-ssl.conf

default.conf 파일과 default-ssl.conf 파일은 하나로 병합해서 사용 해도 관계는 없다.

 

가상 호스트를 생성 한 뒤 nginx 를 reload 한다.


위까지 진행 한 경우 http3 를 지원 하는 웹서버의 설정이 모두 끝난다.

다만 구성상 외부서비스 제공은 https 내부에서의 통신은 http 프로토콜을 사용하기 때문에 기본 상태의 wordpress 의 에러메세지를 볼 수 있다.

was 서버에서 운영되는 워드프레스의 wp-config.php 파일에 /* That's all, stop editing! Happy blogging. */ 위 부분에 아래 소스를 삽입 해야 한다.


브라우져 접속 및 체크 사이트(https://http3check.net/) 접속을 통해 HTTP/3 이 활성화 되었는지 확인 한다.
2022-05-11_1117222022-05-12_121827