php小編柚子發現在使用docker中的nginx時,可能會遇到樣式和映像無法在頁面中正確顯示的問題。這可能是由於配置問題或路徑錯誤導致的。在解決這個問題之前,我們需要仔細檢查nginx的設定檔和檔案路徑,確保正確設定和引用。接下來,我們將探討一些常見的解決方法,幫助您解決這個煩惱的問題。
我有一個 golang Web 應用程序,我決定在它前面使用 Nginx 來提供靜態文件,並將其用作我的 Web 應用程式的反向代理。
Web 應用程式的 Dockerfile:
FROM golang:1.21.1 WORKDIR /app COPY go.mod go.sum ./ RUN go mod download && go mod verify COPY . ./ RUN go build -o ./bin/site ./cmd/site/main.go CMD ["./bin/site"]
Docker 撰寫文件:
version: '3' services: nginx: image: nginx:1.25.2 restart: always ports: - "80:80" volumes: - "./nginx.conf:/etc/nginx/nginx.conf:ro" - "./site/assets/:/app/assets/" site: build: ./site container_name: tmp-site restart: always volumes: - "./site/views:/app/views"
和 nginx 設定:
events { worker_connections 1024; } http { server { listen 80; server_name tmp.loc www.tmp.loc; location ~* \.(jpg|jpeg|png|gif|ico|css|js|html|svg)$ { root /app/assets/; expires max; access_log off; } location / { proxy_pass http://tmp-site:5555; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } } }
在網頁上我有兩張圖片,一張是png,一張是svg,css文件很簡單,只包含background-color: lightblue
作為body標籤,還有js文件,它只是控制台記錄字串“Loaded!” 。使用 docker compose 啟動容器後,我遇到以下問題:
完整程式碼在這裡 - https://github.com/ivnku/tmp
Engine.Reload(true)
提供此功能:<code>// Reload the templates on each render, good for development engine.Reload(true) // Optional. Default: false </code>
http
部分中包含 mime 類型將解決此問題:http { include /etc/nginx/mime.types; server { ... } }
以上是docker 中 nginx 提供的樣式和圖像在頁面上不起作用的詳細內容。更多資訊請關注PHP中文網其他相關文章!