[javascript] nginx : 모든 요청을 단일 HTML 페이지로 전송

nginx를 사용하여 URL을 유지하고 싶지만 실제로는 동일한 페이지를로드합니다. URL을 with History.getState()javascript 앱에서 요청을 라우팅하는 데 사용합니다. 간단한 일인 것 같아요?

location / {
    rewrite (.*) base.html break;
}

작동하지만 URL을 리디렉션합니까? 여전히 URL이 필요합니다. 항상 같은 페이지를 사용하고 싶습니다.



답변

나는 이것이 당신을 위해 그것을 할 것이라고 생각합니다 :

location / {
    try_files /base.html =404;
}


답변

사용하는 것이 효과 try_files가 없었습니다 . 로그에 다시 쓰기 또는 내부 리디렉션주기 오류가 발생했습니다.

Nginx 문서에는 몇 가지 추가 세부 정보가 있습니다.

http://nginx.org/en/docs/http/ngx_http_core_module.html#try_files

그래서 나는 다음을 사용하여 끝났습니다.

root /var/www/mysite;

location / {
    try_files $uri /base.html;
}

location = /base.html {
    expires 30s;
}


답변

원래 재 작성은 거의 작동합니다. 왜 리디렉션되는지 확실하지 않지만 실제로 원하는 것은

rewrite ^ /base.html break;

이를 위치 나 서버에 직접 넣을 수 있어야합니다.


답변

이것은 나를 위해 일했다 :

location / {
    alias /path/to/my/indexfile/;
    try_files $uri /index.html;
}

이를 통해 자바 스크립트 단일 페이지 앱에 대한 포괄 URL을 만들 수있었습니다. css, fonts 및 javascript와 같은 모든 정적 파일은와 npm run build 같은 디렉토리에 있으면 찾을 수 있습니다 index.html.

정적 파일이 다른 디렉토리에 있다면 어떤 이유로 든 다음과 같은 것이 필요합니다.

# Static pages generated by "npm run build"
location ~ ^/css/|^/fonts/|^/semantic/|^/static/ {
    alias /path/to/my/staticfiles/;
}


답변

이것은 나를 위해 일했다 :

location / {
    try_files $uri $uri/ /base.html;
}


답변

올바른 방법은 다음과 같습니다.

location / {
    rewrite (.*) base.html last;
}

를 사용 last하면 nginx가 새로운 적합한 제품을 찾을 수 있습니다location 가 재 작성 결과에 따라 블록을 됩니다.

try_files 이 문제에 대한 완벽한 접근 방식이기도합니다.


답변