
운영 서버에 새로운 서비스를 배포하려고하였더니,
nginx 설정파일이 없다고해서
/etc/nginx/conf.d/default.conf 파일을 만들어서 제공해주었다.
그랬더니
아래의 에러가 나타났다.
2025/05/15 13:45:54 [error] 5263#5263: *320 open) "/usr/share/nginx/html/test" faile d (2: No such file or directory),
경로가 잘못된거같은데, 왜 경로가 잘못된거지?
하고 찾아보던중, nginx에 해당 경로를 제공해주는 root를 설정해주지 않아서 그런가? 생각했는데.
나는 분명 root를 제공했거든..

그러고나서, nginx의 설정파일에 대해서 들어가게되었다.
/etc/nginx/nginx.conf
해당 파일에 들어가서
http{
//... 그림의 내용
}

위의 내용이 들어가야 해당 conf.d 파일 인지된다는것을 확인.
근데 해당 내용을 넣어주어도, 계속 인지가 안되자.
sudo nginx -T | grep -n 'root '
으로 root가 인지되는 nginx의 설정 파일내용들을 찾기 시작하였는데,
내가 넣은 내용들이 잘나오더라.
권한이 root만 있고, 내가 속한 그룹은 없더라..
nginx의 서버에서 root도 내가 지정해주는걸로하려면,
아래의 root값도 삭제해주는게 좋을듯

우리가 HashRouter를 사용중이라 가능했던것이있다.
HashRouter
URL 구조: https://example.com/#/path/to/page
해시(#) 뒤(fragment)는 브라우저에서만 해석 → 서버로는 전송되지 않음
클라이언트 라우팅 전용, 서버 설정 불필요
BrowserRouter
URL 구조: https://example.com/path/to/page
HTML5 History API 사용 → 모든 경로 요청이 서버로 전달됨
깔끔한 URL 제공, SEO·분석 도구 연동 유리
BrowserRouter는 클라이언트에서만 경로를 해석하므로, 사용자가 주소창에 /accounts/dashboard 같은 경로로 직접 접근하거나 새로고침하면,
서버(Nginx)는 그 경로에 대응하는 실제 파일(.js, .html 등)이 없다면 404를 반환합니다.✅ 따라서, BrowserRouter를 쓴다면 Nginx에 “모든 요청을 index.html로 포워딩”하는 fallback 설정이 반드시 필요합니다.
server {
listen 80;
server_name localhost;
root /home/apps/test/build;
index index.html;
# /accounts 로 시작하는 모든 경로를 SPA 진입점으로 처리
location ^~ /test {
try_files $uri $uri/ /test/index.html;
}
}