programing

nginx: 모든 요청을 단일 html 페이지로 보냅니다.

goodsources 2023. 10. 3. 09:13
반응형

nginx: 모든 요청을 단일 html 페이지로 보냅니다.

nginx를 사용하여 url은 보존하고 싶지만, 실제로는 무슨 일이 있어도 같은 페이지를 로드하고 싶습니다.나는 url을 함께 사용할 것입니다.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 / {
    try_files $uri $uri/ /base.html;
}

효과가 있었습니다.

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

이를 통해 자바스크립트 한 페이지 앱의 캐치올 URL을 만들 수 있었습니다.CSS, 폰트, 자바스크립트와 같은 모든 정적인 파일들은 다음과 같습니다.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;
}

사용.lastnginx가 새로운 적합한 것을 찾게 할 것입니다.location다시 쓰기 결과에 따라 차단합니다.

try_files또한 이 문제에 대해 완벽하게 유효한 접근법입니다.

언급URL : https://stackoverflow.com/questions/7027636/nginx-send-all-requests-to-a-single-html-page

반응형