NGINX 통합
NGINX는 높은 성능과 다재다능함을 보장하는 강력한 웹 서버입니다.
NGINX 통합을 통해 로드 밸런싱, 리버스 프록시, 캐시, 보안 등과 관련된 문제를 해결하기 위해 제공되는 기술을 활용할 수 있습니다.
NGINX 설치
NGINX를 설치하는 것은 매우 간단하며, 모든 Linux 배포판의 패키지에서 NGINX를 사용할 수 있어야 합니다.
Ubuntu 또는 Debian 배포판에서는:
apt install nginx
CentOS, Fedora 또는 RedHat 배포판에서는:
yum install nginx
MacOS X에서는 brew와 macports에서 사용할 수 있습니다.
Windows의 경우 다음에서 설치 프로그램을 다운로드할 수 있습니다: http://nginx.org/en/download.html
구성
이 예제에서는 Netuno가 이미 /srv/netuno에 설치되어 실행 중이라고 가정합니다.
NGINX에서 새 사이트를 구성하려면 구성 폴더로 이동하십시오:
- Linux 배포판에서는 일반적으로
/etc/nginx에 있습니다. - brew를 사용하는 MacOS X:
/usr/local/etc/nginx
새 사이트에 대한 새 구성 파일을 sites-available/netuno에 만드십시오.
이 파일의 내용은 다음과 같습니다:
server {
listen 127.0.0.1:80;
server_name app.nae-domein.com;
location / {
proxy_pass http://127.0.0.1:9000;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host nae-netuno-aep-ireum.local.netu.no;
}
location /netuno {
root /srv/netuno/core/web;
}
location /public {
root /srv/netuno/apps/nae-netuno-aep-ireum;
}
}
listen 127.0.0.1:80이라고 표시된 줄을 외부 IP와 해당 포트로 변경할 수 있습니다.
그리고 nae-netuno-aep-ireum 부분은 예를 들어 naeapp과 같이 앱 이름이어야 합니다.
애플리케이션 이름에
_가 포함된 경우(예:nae_app)는 Netuno가 애플리케이션 이름에-를 허용하지 않기 때문입니다. 따라서 도메인 주소에서는_가 지원되지 않으므로-로 대체해야 하며, Netuno가 이를 자동으로_로 변환하여 해당 앱을 찾습니다.
.local.netu.no는 localhost에 대한 바로 가기이며, 대안으로 .localhost를 사용할 수 있습니다.
Netuno는 하위 도메인에 해당하는 이름의 앱을 자동으로 찾기 때문입니다. 따라서 Netuno에 도달하는 Host의 접두사에 애플리케이션 이름을 지정하는 것이 매우 중요합니다.
이 예제에서는 Netuno가 9000 포트와 /src/netuno 경로에서 실행 중이라고 가정합니다. 이 정보를 확인하고 필요한 경우 조정하십시오.
Netuno의 공개 웹 콘텐츠는 core/web 폴더에 있지만 모두 노출해서는 안 되며 netuno 폴더만 노출해야 합니다.
따라서 직접 노출되는 폴더는 core/web/netuno 폴더와 해당 애플리케이션의 public 폴더뿐입니다.
새 사이트 구성 활성화
이제 새 사이트를 활성화하려면 새 구성 파일에 대한 심볼릭 링크를 만들어야 합니다.
Linux에서 NGINX의 사이트 구성 방식은 구성 파일을 sites-available 폴더에 두고, 활성화된 항목은 sites-enabled 폴더에 정의하는 방식이기 때문입니다.
따라서 심볼릭 링크를 만드는 것은 파일 중복을 방지하고 모든 변경 사항이 단일 파일에서 이루어지도록 보장하는 데 중요합니다.
Linux에서는 다음과 같이 심볼릭 링크를 만듭니다:
ln -s /etc/nginx/sites-available/netuno /etc/nginx/sites-enabled/netuno
NGINX 구성 다시 로드
이 구성이 적용되려면 NGINX 구성을 다시 로드해야 합니다.
다시 로드:
nginx -s reload
또는 재시작하십시오:
killall nginx
nginx
또는 더 우아한 방법으로:
service nginx restart
또는 서버를 완전히 중지한 후 다시 시작하십시오:
service nginx stop
service nginx start
다음 명령으로 NGINX 상태를 확인할 수 있습니다:
service nginx status
NGINX 로그 파일은 /var/log/nginx 폴더에 있습니다.
가상 로컬 주소
Netuno는 HTTP 헤더의 Host에 있는 주소 접두사를 기준으로 요청(request)을 처리할 애플리케이션을 결정하며, 접두사에는 Netuno 애플리케이션의 정확한 이름이 포함되어야 합니다.
따라서 Netuno에 올바른 애플리케이션을 사용해야 함을 알리기 위해 가상 주소를 사용할 수 있습니다.
nae-app.local.netu.no가 있으며, 이는 항상 로컬 IP로 확인됩니다.
Netuno의 애플리케이션은
nae_app이어야 합니다. Netuno는 애플리케이션 이름에-를 허용하지 않으며, 도메인은_를 지원하지 않으므로-로 대체해야 하고, Netuno가 이를 자동으로_로 변환합니다.
대안으로 nae-app.localhost와 같은 로컬 주소를 만들 수 있습니다. 이 경우 이 주소를 로컬 호스트로 등록해야 하며, hosts 파일에서 주소 확인을 강제해야 합니다. Linux의 경우 다음 파일을 편집하십시오:
/etc/hosts
그리고 다음 줄을 추가하십시오:
127.0.0.1 nae-app.localhost
이제 이 로컬 주소를 NGINX에서 사용할 수 있습니다.
로컬 개발 환경에 있는 경우 브라우저에서 다음 주소로 확인하면 됩니다:
- NGINX를 통해:
http://nae-app.localhost
- Netuno에 직접:
http://nae-app.localhost:9000
서버나 컨테이너에서 터미널을 통해 작업하는 경우 cURL 명령을 사용하십시오. 예:
- NGINX를 통해:
curl -v http://nae-app.localhost:9000
- Netuno에 직접:
curl -v http://nae-app.localhost:9000
항상 nae-app이라고 언급된 부분이 애플리케이션 이름이어야 함을 확인하십시오.
로컬 개발 환경에서 운영 체제의 hosts 파일 등을 수정한 경우 DNS 확인 캐시 때문에 브라우저를 재시작해야 할 수 있습니다.
NGINX에서 구성을 수정해야 하는 경우 항상 구성을 다시 로드하는 것을 잊지 마십시오.