用Nginx做Rate Limiting

一般人都會用 LNMP stack 做網站吧?

如果沒做 rate limiting,當有人狂連線到網站的時候,PHP 這類語言跟資料庫可能會把 CPU 吃乾抹淨CC

雖然台灣常用的 Laravel 就有內建 rate limiting 的 middleware,但畢竟還是用 PHP 寫的,
可以的話當然用效率更高的 nginx 來做囉

好在 nginx 設定這個超級簡單
這篇文章推薦大部份網站都可以這樣設定,參考看看:

搬家到wordpress的流水帳

原本都在ubuntu環境下用hexo寫部落格。不過寫個部落格要特地重開機換到ubuntu,還得一直下指令、手動上圖等等,實在太pain,所以還是決定搬到wordpress了。

我是在ec2上面用docker-compose開wordpress需要的東西,這篇文章想大概紀錄一下做了哪些事情:

ec2

  • + VPC
  • + Internet Gateway(IGW)
  • attach IGW to VPC
  • 設定 Route table,增加一條 0.0.0.0/0 到 IGW 的 Route
  • + Subnet (public)
  • attach subnet to IGW
  • 設定 Security group,開放 SSH、HTTP、HTTPS 連線
  • + IAM role (assuming ec2)
  • + ec2 instance (t3a.micro + ubuntu + gp3)
  • + Elastic IP (EIP)
  • attach EIP to ec2 instance
  • 下載 ec2 提供的新 ssh key,並放到 ~/.ssh 下,修改權限為 700
  • 設定 ~/.ssh/config,增加一組設定,方便以後連線
  • 連線到 ec2

連到ec2 instance操作

設定HTTPS

  • docker logs certbot
  • 把裡面的 certificate、key 的位置寫到 nginx.conf
  • docker exec -it nginx sh
  • nginx -s reload
  • 大功告成~