05-入口網關

爲服務器創建最重要的入口網關,這是服務器對外提供服務的入口。

服務器最重要的是創建一個入口網關,所有的服務都使用這個入口網關分流。

例如你服務器上有一個 blog 服務,還有一個 bbs 服務,它們使用各自不同的軟件部署好,但你需要用戶都通過默認的 80 端口來訪問它。入口網關就是這一目的,讓它工作在80端口,當用戶訪問對應的服務時,它將請求轉發到實際的服務。

入口網關通常需要依據不同的訪問域名去區分和分流服務,這也是前文要求你去購買域名的原因之一。

ingress

我通常會使用 compose 創建一個 ingress 項目,來充當入口網關,它的 compose 類似下面這樣

networks:
  intranet:
    ipam:
      driver: default
      config:
        - subnet: "172.20.0.0/16"
services:
  envoy:
    image: ${IMAGE_OF_ENVOY}
    restart: always
    hostname: envoy
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - /etc/timezone:/etc/timezone:ro
      - /etc/localtime:/etc/localtime:ro
      - /opt/data/ingress:/etc/envoy:ro
    networks:
      intranet:
        ipv4_address: ${IP_OF_ENVOY}
  web:
    image: ${IMAGE_OF_NGINX}
    restart: always
    environment:
      - LANG=C.UTF-8
      - LC_ALL=C.UTF-8
    volumes:
      - ./conf/nginx/nginx.conf:/etc/nginx/nginx.conf:ro
      - ./conf/nginx/snippets:/etc/nginx/snippets:ro
      - ./conf/nginx/conf.d:/etc/nginx/conf.d:ro
      - ./conf/web:/web:ro
      - /var/www:/var/www:ro
    networks:
      intranet:
        ipv4_address: ${IP_OF_NGINX}
  1. 它實現創建了一個子網 172.20.0.0/16,後續服務都將部署在這個子網,這樣網關才能反代各種服務
  2. 啓動了一個 service envoy,它將宿主機的 80 和 443 綁定到容器因爲我打算讓它做入口網關
  3. service web 則使用 nginx 作爲了一些靜態內容的補充,新人可以直接使用 nginx作爲網關不使用 envoy 更簡單

service web 直接把項目下的 conf/nginx 中的設定映射到了image,這樣方便隨時修改設定

反代

剩下的就是依據你的域名爲 envoy 寫反代設定。如果你使用 nginx 作爲入口網關就寫 nginx 反代設定。

如果使用 nginx 直接手寫設定即可,很簡單,google 學習下幾分鐘就能學會。

如果使用 envoy 就相對複雜,首先你需要花費時間學習下它的設定如何寫,此外學會了也不建議直接手寫很麻煩,建議使用 ejt 工具。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *