라이브러리
[NGINX] proxy_pass - 요청을 다른 서버로 전달할 때 사용할 프록시 서버의 URL을 설정합니다.
NGINX에서 proxy_pass는 요청을 다른 서버로 전달하는 기능입니다. NGINX는 요청을 받고, 원하는 서버로 전달하여 응답을 받은 후, 클라이언트에게 응답을 전달합니다. proxy_pass는 NGINX의 강력한 기능 중 하나로, 로드 밸런싱, 캐싱, 보안 등 다양한 기능을 제공합니다.
proxy_pass의 동작 방식
1. 클라이언트가 NGINX 서버에 요청을 보냅니다.
2. NGINX 서버는 요청을 받고, proxy_pass를 사용하여 원하는 서버로 요청을 전달합니다.
3. 원하는 서버는 요청을 처리하고, 응답을 보냅니다.
4. NGINX 서버는 응답을 받고, 클라이언트에게 응답을 전달합니다.
proxy_pass의 예제
# 예제 1: 단순한 proxy_pass
이 예제에서는 NGINX 서버가 8080 포트의 localhost 서버에 요청을 전달합니다. 클라이언트가 NGINX 서버에 요청을 보냈을 때, NGINX 서버는 요청을 localhost:8080 서버로 전달하고, 응답을 받은 후 클라이언트에게 응답을 전달합니다.
# 예제 2: proxy_pass에 URL 매핑
이 예제에서는 NGINX 서버가 8080 포트의 localhost 서버에 /api 경로의 요청을 전달합니다. /static 경로의 요청은 NGINX 서버에서 직접 처리합니다.
# 예제 3: proxy_pass에 캐싱
이 예제에서는 NGINX 서버가 8080 포트의 localhost 서버에 요청을 전달하고, 캐시를 사용하여 응답을 저장합니다. 캐시된 응답은 1분 동안 유효합니다.
proxy_pass의 옵션
- `proxy_pass`: 요청을 전달할 서버의 URL을 지정합니다.
- `proxy_set_header`: 요청에 헤더를 추가합니다.
- `proxy_cache_valid`: 캐시된 응답의 유효 시간을 지정합니다.
- `proxy_cache`: 캐시를 사용할 때, 캐시의 이름을 지정합니다.
- `proxy_cache_key`: 캐시 키를 지정합니다.
proxy_pass의 장점
- 로드 밸런싱: NGINX 서버가 여러 서버에 요청을 분산하여 처리할 수 있습니다.
- 캐싱: NGINX 서버가 캐시를 사용하여 응답을 저장하여, 요청을 처리하는 시간을 단축할 수 있습니다.
- 보안: NGINX 서버가 요청을 검사하여, 악성 요청을 차단할 수 있습니다.
proxy_pass의 단점
- 복잡한 설정: proxy_pass를 사용하여, 복잡한 설정이 필요할 수 있습니다.
- 캐시 오류: 캐시 오류가 발생할 수 있습니다.
결론
NGINX의 proxy_pass는 요청을 다른 서버로 전달하는 강력한 기능입니다. proxy_pass를 사용하여, 로드 밸런싱, 캐싱, 보안 등 다양한 기능을 제공할 수 있습니다. 하지만, proxy_pass를 사용할 때, 복잡한 설정이 필요할 수 있습니다. 따라서, proxy_pass를 사용하기 전에, 충분한 테스트와 검증을 수행해야 합니다.
proxy_pass의 동작 방식
1. 클라이언트가 NGINX 서버에 요청을 보냅니다.
2. NGINX 서버는 요청을 받고, proxy_pass를 사용하여 원하는 서버로 요청을 전달합니다.
3. 원하는 서버는 요청을 처리하고, 응답을 보냅니다.
4. NGINX 서버는 응답을 받고, 클라이언트에게 응답을 전달합니다.
proxy_pass의 예제
# 예제 1: 단순한 proxy_pass
#hostingforum.kr
nginx
http {
upstream backend {
server localhost:8080;
}
server {
listen 80;
location / {
proxy_pass http://backend;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
}
이 예제에서는 NGINX 서버가 8080 포트의 localhost 서버에 요청을 전달합니다. 클라이언트가 NGINX 서버에 요청을 보냈을 때, NGINX 서버는 요청을 localhost:8080 서버로 전달하고, 응답을 받은 후 클라이언트에게 응답을 전달합니다.
# 예제 2: proxy_pass에 URL 매핑
#hostingforum.kr
nginx
http {
upstream backend {
server localhost:8080;
}
server {
listen 80;
location /api {
proxy_pass http://backend;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
location /static {
root /var/www/static;
}
}
}
이 예제에서는 NGINX 서버가 8080 포트의 localhost 서버에 /api 경로의 요청을 전달합니다. /static 경로의 요청은 NGINX 서버에서 직접 처리합니다.
# 예제 3: proxy_pass에 캐싱
#hostingforum.kr
nginx
http {
upstream backend {
server localhost:8080;
}
server {
listen 80;
location / {
proxy_pass http://backend;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_cache_valid 200 1m;
proxy_cache_valid 404 1m;
proxy_cache my_cache;
proxy_cache_key $request_uri;
}
}
}
이 예제에서는 NGINX 서버가 8080 포트의 localhost 서버에 요청을 전달하고, 캐시를 사용하여 응답을 저장합니다. 캐시된 응답은 1분 동안 유효합니다.
proxy_pass의 옵션
- `proxy_pass`: 요청을 전달할 서버의 URL을 지정합니다.
- `proxy_set_header`: 요청에 헤더를 추가합니다.
- `proxy_cache_valid`: 캐시된 응답의 유효 시간을 지정합니다.
- `proxy_cache`: 캐시를 사용할 때, 캐시의 이름을 지정합니다.
- `proxy_cache_key`: 캐시 키를 지정합니다.
proxy_pass의 장점
- 로드 밸런싱: NGINX 서버가 여러 서버에 요청을 분산하여 처리할 수 있습니다.
- 캐싱: NGINX 서버가 캐시를 사용하여 응답을 저장하여, 요청을 처리하는 시간을 단축할 수 있습니다.
- 보안: NGINX 서버가 요청을 검사하여, 악성 요청을 차단할 수 있습니다.
proxy_pass의 단점
- 복잡한 설정: proxy_pass를 사용하여, 복잡한 설정이 필요할 수 있습니다.
- 캐시 오류: 캐시 오류가 발생할 수 있습니다.
결론
NGINX의 proxy_pass는 요청을 다른 서버로 전달하는 강력한 기능입니다. proxy_pass를 사용하여, 로드 밸런싱, 캐싱, 보안 등 다양한 기능을 제공할 수 있습니다. 하지만, proxy_pass를 사용할 때, 복잡한 설정이 필요할 수 있습니다. 따라서, proxy_pass를 사용하기 전에, 충분한 테스트와 검증을 수행해야 합니다.
댓글목록
등록된 댓글이 없습니다.