awsのIP一覧

https://ip-ranges.amazonaws.com/ip-ranges.json

jsonで返ってくるのでjq使うと良い。

ex: cloudfront のip prefixだけ抜く

curl -s https://ip-ranges.amazonaws.com/ip-ranges.json | jq -r '.prefixes[] | select(.service == "CLOUDFRONT") | .ip_prefix'

13.32.0.0/15
13.54.63.128/26
34.195.252.0/24
35.162.63.192/26
52.15.127.128/26
52.46.0.0/18
52.52.191.128/26
52.56.127.0/25
52.57.254.0/24
52.66.194.128/26
52.78.247.128/26
52.84.0.0/15
52.199.127.192/26
52.212.248.0/26
52.220.191.0/26
52.222.128.0/17
54.182.0.0/16
54.192.0.0/16
54.230.0.0/16
54.233.255.128/26
54.239.128.0/18
54.239.192.0/19
54.240.128.0/18
204.246.164.0/22
204.246.168.0/22
204.246.174.0/23
204.246.176.0/20
205.251.192.0/19
205.251.249.0/24
205.251.250.0/23
205.251.252.0/23
205.251.254.0/24
216.137.32.0/19

VMWareの仮想マシンのdiskを縮小してpartitionを削除する

https://www.experts-exchange.com/articles/12938/HOW-TO-Shrink-a-VMware-Virtual-Machine-Disk-VMDK-in-15-minutes.html

vCenterからいじっただけでは縮小されないので。
linux VMの対応。N GBからM GBに縮小する例。
1. 削除するpartitionをumountしてfstabから消す
2. partitionを削除(これしなくて良いかも)
3. 仮想マシンをshutdown
4. データストアの/vmname/vmname.vmdk を開く
flat.vmdkの行を変更する。
N GBの場合
1024 * 1024 * 1024 * N / 512 の値になっているので
1024 * 1024 * 1024 * M / 512 を計算してその値に変更する

# 50GB
RW 104857600 VMFS "vmname-flat.vmdk"
# 30GB
RW 62914560 VMFS "vmname-flat.vmdk"

5. 仮想マシンのデータストアを移行する

これでvmname-flat.vmdkのサイズが変更後のサイズになった。

共用サーバの接続制限で良さげなapache module - mod_vhost_maxclients

ペパボの中の人さまさま。

virtualhostごとに同時アクセス数や帯域を制限するmoduleにmod_cbandがあったけど
オーバヘッドが大きいのか、設定値の30%しか速度がでないなどややわかりにくかった。

mod_vhost_maxclientsは以下のことができる。
virtualhostごとの同時アクセス数、
1IPからのアクセス数、
制限を除外する拡張子の設定、
制限しないけどログ出力だけする、など

SSLアクセラレータ(reverse proxy)配下のnginxのcache_key

SSLアクセラレータ配下のnginxで
http、httpsで個別のキャッシュにしたいときに、
この設定をいれると、一見$schemeでhttp/httpsに振り分けられて
出来そうに見えますが、このままだと同じキャッシュになります。

proxy_cache_key "$scheme://$host$request_uri";

fastcgi_cache_key
uwsgi_cache_key
も同様

nginxに復号された状態でrequestがくるのでssl用のvirtualhostの
$schemeの中身はhttpになっています。

回避するには明示的にcache_keyにhttpsと指定する必要あり。

  • http
proxy_cache_key "$scheme://$host$request_uri";
proxy_cache_key "https://$host$request_uri";

もしくはcache用の変数を1個かまして、proxy_cache_key は同じ設定にする。
($schemeは元から定義されている変数なので別に用意)

  • http
set $cache_scheme "http";
proxy_cache_key "$cache_scheme://$host$request_uri";
set $cache_scheme "https";
proxy_cache_key "$cache_scheme://$host$request_uri";

SSLアクセラレータ(reverse proxy)配下のnginxで"/"なしのディレクトリにアクセスされたときのredirect

hogem.hatenablog.com

だいぶ前のだけど。どうしてもSSLのままredirectさせたい場合の解決方法。

やや強引だけど。-dでrequestがdirectoryに来て、かつ
"/"がない場合はrewriteしてhttpsに飛ばす設定

if (-d $request_filename) {
  rewrite ^/(.*[^/])$ https://$host/$1/ permanent;
}

一旦httpにredirectかかっても良い場合は、
http側のvirtualhostでhttpsにredirectさせても良い。