三月 2, 2019 | 伺服器和Devops

【Traefik教學】用Traefik一次處理好Mixed Content的網站問題

Traefik的好用這裡就不多說囉,若你還不知道這個強大的反向代理工具,可以參考我寫的這篇文章:【網站架設】簡易方便的反向代理工具Traefik,而這一篇文章,主要是來解決長久以來我面臨到的小問題,Mixed Content。

前言

Traefik的好用這裡就不多說囉,若你還不知道這個強大的反向代理工具,可以參考我寫的這篇文章:【網站架設】簡易方便的反向代理工具Traefik,而這一篇文章,主要是來解決長久以來我面臨到的小問題,Mixed Content。

Mixed Content問題

什麼是Mixed Content呢?中文叫做“混合內容”,想要知道詳細的解釋,可以參考這篇文章混合內容介紹,這裡簡單介紹,“主要就是當使用者瀏覽HTTPS的網頁內容時,裡面還有HTTP的內容”。

HTTPS的網頁就代表著使用者與伺服器之間的連線就會用TLS加密,以防受到竊聽或中間人攻擊,當網頁是Mixed Content的情況下,相對起來就較容易造成攻擊與竊聽。

瀏覽器出現的錯誤

當然,在有Mixed Content的狀況下,要達到網頁常看到的綠色鎖頭就有困難囉,但很多時候內容可能不是我們想改就可以改掉或處理好的,這個時候Traefik有個好用的功能,可以一次解決囉。

使用Traefik一行解決Mixed Content

若你有在用Traefik,一定知道Traefik既輕巧又方便,我這裡主要使用Docker來跑所有的網站服務,因此,搭配到Traefik可以使用對應的Label與Docker-compose。即可對容器展開控制。

以下是Docker設定Traefik的範本

webapp:
    image: hellosanta/php4drupal:php7.0-apache
    networks:
      - ReverseProxy
    labels:
      - "traefik.frontend.rule=Host:myawesomedomain.com"
      - "traefik.enable=true"
      - "traefik.frontend.headers.contentSecurityPolicy=upgrade-insecure-requests"
      # - 加入上面這一行就可以囉
      - "traefik.port=80"
    restart: always
    links:
      - mysql:mysql
      - memcache:memcache

加入以後,就可以發現奇妙的事情發生了,所有有Mixed Content的問題,一次解決。

結論

這個問題一開始最讓人頭痛的地方主要是從HTTP轉到有HTTPS,若當時有一些原因,讓路徑是走HTTP,就會讓人非常頭痛處理。有了Traefik,可以一個label就處理完畢,不需用任何複雜的設定即可完成,享用囉:)