Nginx에서 Reverse Proxy 설정하기

날씨는 맑음·2022년 12월 23일
0

Nginx

목록 보기
3/3
post-thumbnail

1. Reverse Proxy

1.1. Proxy

Proxy는 번역하면 대리라는 의미를 가진다. Proxy 서버는 클라이언트와 서버 사이에서 클라이언트 또는 서버를 대신해서 기능을 수행하거나 중계하는 역할을 한다.

1.2. Reverse Proxy

리버스 프록시는 클라이언트로부터 오는 요청을 서버 대신 처리하거나 중계하는 역할을 한다.

  • 서버의 응답을 캐시에 저장하여 서버에 요청하지 않고 응답해서 리소스를 절약
  • 내부의 WAS 보호
  • 많은 요청을 처리하기 위해 여러대의 서버에 부하분산

1.3. Forward Proxy

포워드 프록시는 클라이언트가 직접 웹에 연결하는게 아니라 포워드 프록시가 요청을 받아 대신 연결하고 응답을 클라이언트에게 전달해주는 역할을 한다.

  • 자주 사용되는 컨텐츠 캐싱
  • 정해진 사이트만 연결하도록 설정

2. 설정하기

nginx.conf의 구성을 변경하여 nginx를 리버스 프록시로 동작시켜 보자

2.1. proxy_pass

2.1.1. nginx.conf 설정

location Block Directive 내부에 proxy_pass라는 directive를 구성하여 리버스 프록시로 설정할 수 있다. WAS에서는 프록시의 존재를 몰라도 되기 때문에 ApaceTomcatAJP로 연결하던 것에 비하면 간단하게 설정이 된다.

http {
	server {
    	listen 80;
        server_name localhost;
        
        location / {
        	proxy_pass http://localhost:8080/;
        }
    }
}
  • proxy_pass http://localhost:8080/ : 실제로 구동중인 WAS에 요청할 URL을 입력

2.1.2. WAS 구동

간단하게 Spring으로 API를 만들고 테스트해보자. Spring Boot로 Spring Web 의존성만 추가해서 프로젝트를 만든다. 이후 아래와 같이 컨트롤러를 생성한다.

@RestController
public class HelloController {

    @Value("${server.port}")
    private int port;

    @GetMapping("/greet")
    public String greeting(){
        return "Hello, My Port is " + port;
    }
}

WAS를 동작시키고 curl로 테스트를 해보자.

위와 같이 응답이 제대로 나온다면 nginx와 연동해서 테스트해보자.

nginx를 이용해서 테스트를 완료 했다. proxy_pass 외에도 헤더 추가나, 버퍼 등 설정을 할 수 있으니 공식 문서를 참고바란다.

3. 참고

0개의 댓글