AWS/인프라 구축

EKS에서 nginx-tomcat 연동하는 방법

miracle21 2023. 7. 19. 15:48
반응형

 

Nginx upstream 모듈을 사용하면 된다.

 

 

 

 

/etc/nginx/sites-available 디렉토리에 위치한 default 파일에 upstream 모듈 추가

 

upstream express-server {
        server <tomcat 주소>:8080;
        }

 

<tomcat 주소> 에는 EKS에서 부여하는 IP 주소가 자동으로 매치되도록 tomcat의 서비스 이름을 넣어준다.

EKS에서 서비스 생성 시 tomcat 서비스를 먼저 만들고 nginx 서비스를 만들어야한다.

 

 

아래는 코드 예시:

 

반드시 was-server 라는 이름의 서비스를 먼저 생성

# Cluster yaml 파일
# web은 nginx
# was는 tomcat
---
apiVersion: v1
kind: Service
metadata:
  name: was-server
  labels:
      app: was-server
spec:
  type: ClusterIP
  selector:
    app: was-server
  ports:
  - port: 8080
    targetPort: 8080
---
apiVersion: v1
kind: Service
metadata:
  name: web-server
  labels:
      app: web-server
spec:
  type: NodePort
  selector:
    app: web-server
  ports:
  - port: 80
    targetPort: 80
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: web-server
spec:
  replicas: 2
  selector:
    matchLabels:
      app: web-server
  template:
    metadata:
      name: web-server
      labels:
        app: web-server
    spec:
      containers:
      - name: web-server
        image: miracle21/nginx
        imagePullPolicy: Always
        ports:
        - containerPort: 80
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: was-server
spec:
  replicas: 2
  selector:
    matchLabels:
      app: was-server
  template:
    metadata:
      labels:
        app: was-server
    spec:
      containers:
      - name: was-server
        image: miracle21/tomcat
        imagePullPolicy: Always
        ports:
            - containerPort: 8080

 

tomcat ip 주소에 서비스 이름 넣기

# nginx의 default

upstream express-server {
        server was-server:8080;
        }


server {
        listen 80 default_server;
        listen [::]:80 default_server;

        root /var/www/html;

        # Add index.php to the list if you are using PHP
        index index.html index.htm index.nginx-debian.html;

        server_name _;


        location / {
                proxy_pass http://express-server;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header Host $http_host;
        }

 

 

kubectl apply 결과

 

반응형