0%

前言

最近發現 Nginx 運行一段時間之後,就會出現以下幾種 error:

  • connect() failed (111: Connection refused) while connecting to upstream
  • upstream timed out (110: Connection timed out) while connecting to upstream

本來一直以為是 config 少設定了一些參數,後來才發現是 動態IP 的問題。
Nginx 在啟動時會向 DNS server 查詢 Domain 對應的 IP,之後就會 cache IP,直到下次重新載入 config 才會再更新,所以當我們服務的 IP 改變之後,Nginx 就會開始出現 Connect failed, Connection timeout 等 error.

Read more »

Docker

簡介

Docker 是一種虛擬化技術,透過 container 的方式將應用程式和所需執行環境打包起來,方便佈署到其他伺服器上,避免因為系統環境不同而無法正確執行,也可以節省建立環境的繁瑣步驟。此外,Docker 也可以用來模擬不同環境下,程式是否能正確執行。

和 Virtual Machine 相比,Docker 的利用率更高,容量小、高效能、啟動速度快,一台伺服器上(Host)可以執行多個 container, 而每個 container 是獨立的,互不影響。

接下來紀錄一下如何在 Linux 環境上安裝及使用 Docker,並且使用 Docker 將我們的應用程式及執行環境打包。

Read more »

mocha

前言

在開發專案的過程中,很重要的一個部份是測試。在開發時常常會遇到某次修改之後,原本正常的功能突然不能用了,透過單元測試可以確保每次修改後,沒有造成其他地方出問題。

Javascript 有許多單元測試框架,例如:mocha, Jest, Jasmine…等,這篇文章主要是使用 mocha 測試框架。此外,我們還需要斷言庫來幫助我們判斷測試結果是否符合預期,這裡我們使用 chai 斷言庫。另外還可以搭配 supertest 來測試 Node.js API, supertest 是一個提供輕量級的 HTTP Request 測試的套件,通常會用來測試 Node.js API.

接下來就記錄一下如何使用 mocha, chai 和 supertest 來做單元測試。

Read more »

Nginx 可同時處理的連線數上限是 worker_processes * worker_connections, worker_processes 是 worker 的行程數,通常會設定成 CPU 核心數,或是也可以設定成 auto,讓 Nginx 自動偵測可用的 CPU 核心數。而worker_connections 是同一時間允許的連線總數量。

Read more »

Nginx

前言

Nginx 是一個 Web Server, 也可以用來作為 Reverse Proxy, Load Balancer 和 HTTP cache.
這一篇文章主要紀錄如何安裝以及設定 Nginx。

Read more »

https

我們可以透過以下兩個網站申請免費的 SSL 憑證:

  • Let′s encrypt: 是一個提供免費 SSL 服務的網站,可以手動申請 SSL 憑證,也可以串接它的 API,讓申請憑證的流程自動化,詳細的內容可以參考官方網站
  • CloudFlare: 主要提供 CDN 的服務,多了一層的代理,可以保護網站受到攻擊,同時也能提升網站效能,另外 CloudFlare 也有提供免費的 SSL 服務。
Read more »