/opt/homebrew/opt/nginx
의 bin
디렉토리로 이동하여 nginx
실행http://localhost:8080
을 입력하면nginx -s quit
명령어를 통해 nginx를 종료한다.nginx -s signal
을 통해 컨트롤할 수 있다. signal의 종류는 다음과 같다.http://localhost:8080
에 접속이 되지 않는 것을 확인할 수 있다.http {
upstream myapp1 {
server srv1.example.com; // 로드밸런싱 대상서버1
server srv2.example.com; // 로드밸런싱 대상서버2
server srv3.example.com; // 로드밸런싱 대상서버3
}
server {
listen 80; // 80포트 리스닝
location / {
proxy_pass http://myapp1; // 프록시 패스 대상 어플리케이션 주소
}
}
}
upstream 어플리케이션이름
을 설정하고, 그 안에 server 서버도메인
나열한다.listen 포트
와 같이 작성한다location
하단에 앞서 설정한 어플리케이션이름을 proxy_pass http://어플리케이션이름
과 같이 작성한다.cd /opt/homebrew/etc/nginx 경로로 이동하면 설정파일들이 있다. 이 중에서 nginx.conf
파일이 nginx의 기본 설정파일이다.
기본 설정파일을 복사하여 hello.conf
를 만들어보자.
그 후 이중화 로드밸런싱를 위해 설정파일을 수정한다.
hello.conf
파일을 다음과 같이 수정한다.hello
라는 어플리케이션 이름을 설정하고8888
, 9999
2가지 포트로 서버를 구성하였다.8080
포트로 리슨을하여 두 서버로 로드밸런싱을 할 것이다.8888
, 9999
두가지 포트로 실행한다.hello.conf
를 적용하여 nginx를 다시 실행한다.nginx -c 경로/hello.conf
명령어를 통해 컨픽 파일을 적용하여 실행시키면 된다.http://localhost:8080/
으로 접속하면 새로고침마다 번갈아가며 2개의 서버로 로드밸런싱되는 로그를 확인할 수 있다.원리는 다음과 같다.
클라이언트의 요청이 8080 포트로 들어오면 nginx가 설정파일에 구성해둔 8888
, 9999
포트로 요청을 각 서버로 분배한다.
실제 운영에서도 이와같이 외부로 특정포트만 열고(listen) 내부에서 nginx를 통해 로드밸런싱을 구성하면 될듯하다.
분배방식의 기본값은 round-robin
방식으로 각 서버에 돌아가며 분배하는 형태이고, 요청이 적은 서버로 분배하는 least_conn
, ip당 서버를 분배하는 ip_hash
등 여러가지 옵션을 사용할 수 있다.