자세한 내용을 원하신다면 이전글을 참고해주세요~
https://blu-blu.tistory.com/80
프록시 서버란?
클라이언트와 서버 간의 중계 역할을 수행하는 서버
클라이언트가 요청하는 내용을 받아서 해당 요청을 다른 서버에 전달하고, 서버로부터 받은 응답을 클라이언트에게 반환합니다. 이를 통해 클라이언트와 서버 사이의 직접적인 통신을 중개하고 보안, 성능, 로드 밸런싱 등의 목적으로 활용될 수 있습니다.
NGINX 설정을 위해 NGINX 설정 파일로 접근해줍니다
그 후 아래와 같은 코드를 추가해줍니다.
location /was {#/was 경로에 대한 설정 정의
proxy_pass http://localhost:8080; #/was 경로로 들어오는 요청을 http://localhost:8080로 프록시(Nginx는 클라이언트로부터의 요청을 받고 이를 http://localhost:8080으로 전달하고, 해당 서버에서 응답을 받은 후 클라이언트에게 다시 전달함.)
root /var/www; #해당 경로에서 파일을 찾을 때 기본적으로 /var/www 디렉토리를 사용
index was.html #was.html 파일을 인덱스 파일로 사용하여 클라이언트에게 반환함
try_files $uri $uri/ =404; # 파일이나 디렉토리가 없을 경우 404 에러를 반환
}
자세한 내용은 주석을 참고해주세요!
변경사항을 적용하기 위해 아래 코드를 통해 nginx를 재시작해줍니다!
sudo systemctl restart nginx
그 다음 was 폴더를 생성하고, was.html을 만들어주겠습니다.
ubuntu@ip-10-0-1-202:~$ cd /var/www/
ubuntu@ip-10-0-1-202:/var/www$ sudo mkdir was
ubuntu@ip-10-0-1-202:/var/www$ cd was/
ubuntu@ip-10-0-1-202:/var/www/was$ sudo vi was.html
ubuntu@ip-10-0-1-202:/var/www/was$ cat was.html
<h1> hi </h1>
이제 /was경로로 접속해보겠습니다!
502가 떴지만 이는 에러가 아닙니다?!
술은 마셨지만 음주운전은 안했습니다 같지만 정말 에러가 아닙니다...
그 이유는 현재 8080 포트를 가진 프로세스가 없기 때문입니다!
이는 해당 프록시 서버가 실행 중이 아니거나, 올바르게 동작하지 않는다는 것을 의미합니다. 당연히 저는 배포를 하지 않았기 때문에 프록시 서버가 실행 중이 아닙니다.
배포를 통해 프록시 서버를 실행하고, 이를 Nginx 설정에 올바르게 지정하여 요청을 전달하면 Nginx가 클라이언트 요청을 프록시 서버로 전달하고, 해당 서버가 요청을 처리하여 응답을 반환할 수 있게 됩니다.
Nginx의 설정에서 proxy_pass http://localhost:8080;를 사용하여 요청을 프록시하는 경우, Nginx는 클라이언트로부터의 요청을 받아서 해당 요청을 localhost의 8080 포트로 전달합니다.
이것은 클라이언트가 Nginx에 요청을 보내고, Nginx가 다른 서버(8080 포트에 실행 중인 서버)에 요청을 전달하는 프록시 서버의 역할을 수행한다는 것을 의미합니다.
따라서 8080 포트를 가진 프로세스가 없는 경우, Nginx는 요청을 프록시할 서버를 찾지 못하게 되어서 "502 Bad Gateway" 오류가 발생하게 됩니다. 이는 Nginx가 설정된 프록시 서버로 요청을 중계할 수 없기 때문에 발생하는 문제입니다.
결국 프록시 서버가 없는 상태에서는 Nginx가 요청을 프록시할 대상이 없으므로, 설정된 프록시 패스가 작동하지 않게 되어 클라이언트 요청을 처리할 수 없게 됩니다.
'프로젝트 🧸 > UMC 🌱' 카테고리의 다른 글
[UMC] /mission3에 접속 시 자신의 이름이 포함 된 HTML 문서가 응답으로 오게 구성하는 방법 (1) | 2024.04.17 |
---|---|
[AWS] VPC를 만들어 퍼블릭 서브넷을 구성하여 EC2를 해당 서브넷에 구성해보기 (0) | 2024.04.16 |
[UMC] NGINX 설치하고 브라우저에서 접속하기 (0) | 2024.04.14 |
[원격 접속] VSCode (Node.js) (0) | 2024.04.14 |
[원격 접속] IntelliJ (SpringBoot) (0) | 2024.04.14 |