


/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 등 여러가지 옵션을 사용할 수 있다.