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 / {
rewrite (.*) base.html last;
}
를 사용 last
하면 nginx location
가 재 작성 결과에 따라 적합한 새로운 블록을 찾게 됩니다.
try_files
이 문제에 대한 완벽한 접근 방법이기도합니다.
이것은 나를 위해 일했다 :
location / {
try_files $uri $uri/ /base.html;
}
참고 URL : https://stackoverflow.com/questions/7027636/nginx-send-all-requests-to-a-single-html-page
'Programming' 카테고리의 다른 글
병합 : Hg / Git vs. SVN (0) | 2020.06.18 |
---|---|
WebClient 클래스와 함께 CookieContainer 사용 (0) | 2020.06.18 |
메소드를 스레드로부터 안전하게 만드는 것은 무엇입니까? (0) | 2020.06.18 |
gcc 명령 줄을 사용하여 .c 파일에서 .so 파일 작성 (0) | 2020.06.18 |
파이썬에서 대괄호와 괄호로 묶인 목록의 차이점은 무엇입니까? (0) | 2020.06.18 |