어제의 나보다 성장한 오늘의 나

[Apache] 웹서버 리버스 프록시 설정 ( Feat. Next.js 프로젝트 ) 본문

Next.js

[Apache] 웹서버 리버스 프록시 설정 ( Feat. Next.js 프로젝트 )

today_me 2024. 1. 29. 02:35
반응형

 

 

 아파치 웹 서버에 배포한 Next.JS 프로젝트를 위해서 웹서버에 리버스 프록시를 설정하였습니다.

 

 저의 Next.JS 프로젝트를 서버에서 실행 시키면 포트는 3031 이고 경로는 루트(/)로 열리게 됩니다. 그럼 {도메인}:3031/ 로 접속하면 Next.JS 프로젝트에 접속할 수 있었습니다. 근데 이 서버에는 여러 가지 프로젝트들이 많이 있었습니다.
그래서 웹 서버 관리자가 루트 경로가 아닌 {도메인}
/sw-mileage-admin 으로 접속 할 수 있기를 원했습니다. 포트는 80 이고 경로는 /sw-mileage-admin 임을 알 수 있습니다.

 

 


 

 

Why 리버스 프록시??

  • 포워드 프록시 : 클라이언트 → 인터넷 으로 나가는 요청을 중개한다. 리다이렉션이 가능 하지만 나가는 요청을 리다이렉트하는 것이기에 적절하지 않다.
  • 포트 포워딩 : 들어오는 요청의 IP와 포트를 변경 시킬 수 있으나 경로를 변경하기에는 적절하지 않음
  • 리버스 프록시 : 외부의 요청 -> 내부 서버(들)로 전달. 들어오는 요청의 포트와 경로를 변경할 수 있으며, 여러 서버에 대한 요청을 효율적으로 관리할 수 있음.

 

 

웹 서버에 설정 파일에 코드를 추가하면 된다.

 

다음 세 가지만 해주면 된다.

클라이언트 접근 권한 허용
요청 경로 설정
정적 파일 경로 설정

 

 

/etc/apache2/sites-available/000-default.conf

<VirtualHost *:80>

				
        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/html

        # 해당 주소로의 모든 클라이언트들의 접근을 허용
        <Proxy "http://localhost:3031">
         Require all granted
        </Proxy>

         # /sw-mileage 경로로 들어오는 요청을 localhost:3031로 리디렉션
         ProxyPass /sw-mileage-admin http://localhost:3031
         ProxyPassReverse /sw-mileage-admin http://localhost:3031
		
         # 정적 파일 Alias 설정 (_next)
         Alias "/_next" "/home/sw_mileage/SW-Milege-Front/.next"
		    <Directory "/home/sw_mileage/SW-Milege-Front/.next">
		        Options FollowSymLinks
		        AllowOverride All
		        Require all granted
		    </Directory>


        # 정적 파일 Alias 설정 (assets)
        Alias "/assets" "/home/sw_mileage/SW-Milege-Front/public/assets"
        <Directory "/home/sw_mileage/SW-Milege-Front/public/assets">
            Options FollowSymLinks
            AllowOverride All
            Require all granted
        </Directory>
		
        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
		
</VirtualHost>

 

 

 

작성 후 아래 커맨드를 통해 웹 서버를 재시작 하면 적용이 된다.

sudo systemctl restart apache2
반응형
Comments