SPA(Single Page Application)에서 발생하는 404 오류는 종종 클라이언트 측 라우팅 때문에 발생합니다. Nginx는 기본적으로 서버에서 파일을 찾을 수 없는 경우 404 에러를 반환합니다. 그러나 SPA에서는 실제로 서버에 존재하지 않는 경로를 사용하여 클라이언트 측에서 라우팅을 처리하기 때문에 이런 문제가 발생할 수 있습니다.
이를 해결하기 위해 Nginx 설정에서 다음과 같은 조치를 취할 수 있습니다:
1. try_files 지시어 사용하기
try_files 지시어를 사용하여 요청된 파일이 없을 경우 SPA의 기본 HTML 파일로 요청을 리다이렉트할 수 있습니다. 보통은 index.html로 리다이렉트합니다.
server {
listen 80;
server_name yourdomain.com; # 서버 도메인 혹은 IP
root /usr/share/nginx/html; # 프론트엔드 파일이 위치한 디렉토리
index index.html; # 기본 파일 설정
location / {
try_files $uri $uri/ /index.html;
}
# 만약 다른 경로에 API가 있다면, 별도의 location 블록을 설정할 수 있습니다.
# location /api/ {
# proxy_pass http://backend_server;
# }
}
설정 설명:
try_files $uri $uri/ /index.html;:
이 설정은 우선 요청된 URI가 실제 파일 혹은 디렉토리인지 확인합니다.
만약 없다면 /index.html로 리다이렉트하여 SPA의 클라이언트 측 라우터가 경로를 처리하도록 합니다.
2. 설정 적용하기
설정을 수정한 후에는 반드시 설정 파일의 문법을 확인하고, Nginx를 재시작하거나 설정을 재로드해야 합니다.
Protocol(프로토콜): SFTP - SSH File Transfer Protocol을 선택합니다.
Logon Type(로그온 유형): Key file을 선택하세요.
User(사용자): opc를 입력합니다.
Key file(키 파일): 키 파일 경로를 설정합니다.
사용자 확인하기
OCI 인스턴스에 기본적으로 제공되는 사용자 이름은 보통 opc입니다. 하지만 만약 opc 사용자가 아닌 다른 사용자 이름을 사용하고 있거나 인스턴스를 설정할 때 다른 이름을 지정했다면, 다음 방법을 통해 사용자 이름을 확인할 수 있습니다.
1. OCI 웹 콘솔에서 확인
Step 1: Oracle Cloud Infrastructure (OCI) 웹 콘솔에 로그인합니다.
Step 2: 좌측 메뉴에서 Compute -> Instances로 이동하여 사용 중인 인스턴스를 클릭합니다.
Step 3: 인스턴스의 세부 정보 페이지에서 Instance Details 섹션을 확인합니다. 여기서 기본적으로 생성된 사용자 이름에 대한 정보는 제공되지 않을 수 있으나, 인스턴스 설정 시 opc가 기본 사용자 이름으로 지정됩니다.
2. 인스턴스에 SSH로 직접 접근해 확인하기
Step 1: 터미널을 열고, SSH를 통해 인스턴스에 접근해봅니다. 아래와 같은 명령을 사용합니다.여기서 /path/to/your/private/key는 SSH 키 파일의 경로입니다. opc가 사용자 이름이며, 인스턴스의 퍼블릭 IP인 129.154.214.78을 사용합니다.
위의 명령어는 Homebrew가 설치된 경로를 .zprofile 파일에 추가하고, 현재 세션에 반영합니다.
Homebrew가 잘 설치되었는지 확인하기:
터미널에서 다음 명령어를 실행하여 Homebrew가 잘 설치되었는지 확인하세요:
brew --version
Homebrew 버전이 출력되면 제대로 설치된 것입니다.
Nginx 설치하기:
이제 Homebrew를 사용하여 Nginx를 설치할 수 있습니다:
brew install nginx
이 과정을 통해 Homebrew를 정상적으로 사용할 수 있을 것이며, 이후 Nginx도 설치할 수 있을 것입니다.
설치가 완료되면, Nginx가 올바르게 설치되었는지 확인하기 위해 아래 명령어를 입력해 보세요:
nginx -v
설치가 완료되면, Nginx를 시작해 볼 수 있습니다:
sudo nginx
Nginx가 정상적으로 설치되었다면, 브라우저에서 'http://localhost'를 열었을 때 Nginx 환영 페이지를 볼 수 있을 것입니다.
연결 거부 오류
Nginx 시작 확인하기
Nginx 상태 확인 먼저 Nginx가 실행 중인지 확인하세요:만약 Nginx 프로세스가 실행 중이면 관련 프로세스가 표시될 것입니다. 표시되지 않으면 Nginx가 실행되지 않은 것입니다.
ps aux | grep nginx
이 결과는 Nginx가 정상적으로 실행되고 있음을 나타냅니다. root 사용자가 마스터 프로세스를 실행 중이고, nobody 사용자가 워커 프로세스를 실행하고 있습니다. 따라서 Nginx 서버가 제대로 실행되고 있다는 의미입니다.
Nginx 설정 확인
Nginx의 설정 파일이 올바르게 설정되어 있는지 확인합니다. 설정 파일의 위치는 보통 /usr/local/etc/nginx/nginx.conf입니다. 다음 명령어로 설정 파일을 열어 확인해보세요:
sudo nano /usr/local/etc/nginx/nginx.conf
아무것도 표시되지 않는다면, Nginx 설정 파일이 비어 있거나 Nginx가 제대로 설치되지 않았을 수 있습니다. 아래 단계에 따라 문제를 해결할 수 있습니다.
Nginx 설정 파일 확인
먼저, 설정 파일이 비어 있는지 또는 잘못된 위치에 있는지 확인해야 합니다.
ls -l /usr/local/etc/nginx/nginx.conf
이 명령어를 실행하면 설정 파일의 존재 여부와 파일 크기를 확인할 수 있습니다. 파일이 존재하지만 비어 있거나 너무 작다면, Nginx가 제대로 설치되지 않았을 수 있습니다.
에러 메시지에서 /usr/local/etc/nginx/nginx.conf 파일이 없다고 하니, Nginx 설정 파일이 해당 경로에 존재하지 않는 것 같습니다. 다음 단계로 아래와 같은 방법을 시도해 볼 수 있습니다:
Nginx 기본 설정 파일 위치 확인:
sudo find / -name nginx.conf
이 명령어는 시스템 전체에서 nginx.conf 파일을 찾아줍니다.
Nginx 설정 파일이 다른 위치에 있을 수 있습니다. 기본적인 Nginx 설치 경로를 확인해 보세요:
두 개의 Nginx 설정 파일 경로를 확인하셨습니다: /opt/homebrew/etc/nginx/nginx.conf/opt/homebrew/Cellar/nginx/1.27.0/.bottle/etc/nginx/nginx.conf 일반적으로 /opt/homebrew/etc/nginx/nginx.conf가 Nginx의 기본 설정 파일일 가능성이 높습니다. 이 파일을 열어서 내용을 확인하거나 수정할 수 있습니다.