React 사이트를 Play Framework 서버에서 호스팅하려고합니다. React 프론트 엔드는 별도의 프로젝트로 개발되고 빌드 아티팩트 (정적 html/js/css/etc 파일)가 Play 프로젝트의 public
폴더로 복사됩니다.호스팅하기 위해 Play Framework에서 nginx의 try_files를 다시 작성하는 방법
이제 예를 들어 네비게이션 해 보았습니다./page1 (이 경로는 React 경로입니다.)하지만 서버에 이러한 경로가 없으므로 404가 표시됩니다.
내가 원하는 것은 nginx의 try_files $uri /index.html
기능을 복제하는 것입니다. 요청되는 경로가 제공 될 수 있다면 (예 : 서버가 알고있는 자산에 해당), 서비스가 제공됩니다. 그렇지 않으면 URL을 다시 쓰지 않고 index.html 의 내용을 제공하면 React의 라우팅이 작동 할 수 있습니다.
나는 이것을 routes
파일과 컨트롤러 (if/else 포함)로만 사용하려고 시도했습니다. 나는 정확히 nginx에서 하나의 라이너를 복제 할 수 없었습니다. 내가 어떻게 할 수 있니?
이것은 "dev 모드"에서 완벽하게 작동하지만 뚜렷한 모드에서는 실패했습니다. 구체적으로 말하자면, gist의 25 번째 라인에서'f.listFiles'를 사용할 수없는 것으로 보입니다.이 파일은'NullPointerException'으로 폭발합니다. 다음과 같이 dev와 prod 모드 모두에서 작동하도록하려면 Gist를 수정해야합니다. https://gist.github.com/mrubin/211f007508cd90f471d697132727808c – iraxef
명시 적으로'index' 원하는 경우 경로를 다음과 같이 다시 작성하면 'GET/$ path <.*> controllers.FrontEndServingController.frontEndPath (path) ' – iraxef
@iraxef! – millhouse