>  기사  >  백엔드 개발  >  Docker의 nginx에서 제공하는 스타일과 이미지가 페이지에서 작동하지 않습니다.

Docker의 nginx에서 제공하는 스타일과 이미지가 페이지에서 작동하지 않습니다.

王林
王林앞으로
2024-02-09 08:00:10707검색

docker 中 nginx 提供的样式和图像在页面上不起作用

PHP 편집기 Youzi는 Docker에서 nginx를 사용할 때 스타일과 이미지가 페이지에 올바르게 표시되지 않는 문제에 직면할 수 있다는 것을 발견했습니다. 이는 구성 문제 또는 잘못된 경로 때문일 수 있습니다. 이 문제를 해결하기 전에 nginx 구성 파일과 파일 경로를 주의 깊게 확인하여 올바르게 설정되고 참조되는지 확인해야 합니다. 다음으로, 이 귀찮은 문제를 해결하는 데 도움이 되는 몇 가지 일반적인 솔루션을 살펴보겠습니다.

질문 내용

저는 golang 웹 애플리케이션을 가지고 있고 그 앞에 Nginx를 사용하여 정적 파일을 제공하고 이를 웹 애플리케이션의 역방향 프록시로 사용하기로 결정했습니다.

웹 애플리케이션용 Dockerfile:

으아악

Docker 작성 파일:

으아악

및 nginx 구성:

으아악

웹 페이지에 두 개의 이미지가 있습니다. 하나는 png이고 다른 하나는 svg입니다. CSS 파일은 매우 간단하며 본문 태그로 background-color: lightblue만 포함하고, js 파일은 콘솔에 "Loaded!"라는 문자열만 기록합니다. docker compose를 사용하여 컨테이너를 시작한 후 다음 문제가 발생했습니다.

  1. 정적 파일은 무작위로 제공됩니다. 예를 들어 png 이미지는 표시되지만 svg는 표시되지 않고, CSS 스타일은 페이지에 적용되지 않지만 자바스크립트 코드는 제대로 실행됩니다. 흥미롭게도 브라우저의 개발 도구 네트워크 탭에 따라 모든 정적 파일을 성공적으로 가져왔고 해당 내용을 검사할 수 있습니다. 예, 캐싱 없이 페이지를 다시 로드해 보았지만 소용이 없었습니다. 이건 무슨 마법인가요?
  2. 내 docker compose 파일에서 볼 수 있듯이 nginx와 webapp에 대한 볼륨을 설정했습니다. nginx의 경우 잘 작동합니다. 일부 자산을 삭제하고 캐싱 없이 페이지를 다시 로드할 때마다 변경 사항이 적용되지만 템플릿의 텍스트는 페이지에 표시되지 않지만 webapp의 컨테이너로 이동하여 템플릿의 콘텐츠를 검사하면 변경되지만 페이지에서는 docker compose를 사용하여 컨테이너를 다시 시작할 때까지 표시되지 않습니다. 여기에 문제가 있나요?

전체 코드는 여기 - https://github.com/ivnku/tmp

Solution

  1. go Fiber의 templateEngine.Reload(true)을 통해 이 기능을 제공합니다.
으아악
  1. 정적 파일은 실제로 Nginx에서 제공되지만 올바른 MIME 유형이 없습니다. nginx.conf의 http 섹션에 MIME 유형을 포함하면 이 문제가 해결됩니다.
으아악

위 내용은 Docker의 nginx에서 제공하는 스타일과 이미지가 페이지에서 작동하지 않습니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 stackoverflow.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제