11-1. Proxy 서버

Proxy Server

Forward Proxy

Reverse Proxy

11-2. nginx로 Reverse Proxy 구현해보기 ~ ports로 구분

nginx reverse proxy ~ ports

docker-compose.yml

version: "3"

services:
	nginxproxy:
		image: nginx:1.18.0
		ports:
			- "8080:8080"
			- "8081:8081"
		restart: always
		volumes:
			- "/nginx/nginx.conf:/etc/nginx/nginx.conf"

	nginx: 
		depends_on:
			- nginxproxy
		image: nginx:1.18.0
		restart: always

	apache:
		depends_on:
			- nginxproxy
		image: httpd:2.24.46
		restart: always

nginx/nginx.conf

user nginx;
worker_processes  auto;

error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;

events { 
    worker_connections 1024; 
}

http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';
    access_log  /var/log/nginx/access.log  main;    
    sendfile on;
    keepalive_timeout 65;

    **upstream** **docker-nginx** { # 여기 docker-nginx의 경우 그냥 지은 이름. 아무거나 해도 됨. 
        server **nginx**:80; # 위 yaml 파일에서 컨테이너 이름과 동일한 이름
    }

    **upstream** **docker-apache** {
        server **apache**:80;
    }

    **server** {
        listen 8080;

        location / {# 여기가 proxy 부분. 8080포트로 들어오는 요청은 docker-nginx로 전달
            proxy_pass         http://**docker-nginx**; 
            proxy_redirect     off;
            proxy_set_header   Host $host;
            proxy_set_header   X-Real-IP $remote_addr;
            proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header   X-Forwarded-Host $server_name;
        }
    }

    **server** {
        listen 8081;

        location / {
            proxy_pass         http://**docker-apache**;
            proxy_redirect     off;
            proxy_set_header   Host $host;
            proxy_set_header   X-Real-IP $remote_addr;
            proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header   X-Forwarded-Host $server_name;
        }
    }
}