nginx & unicorn で設定してるときに気になった箇所のメモ書き
proxy_redirect
レスポンスヘッダのうち
- Location
- Refresh
の書き換え。
Location ヘッダ
- 201 のとき、新しく作られたリソース(URL)を返す
- 3xx のとき、リダイレクト先のURLを返す
ためのヘッダ
設定例
もし下記のように nginx を設定していて
proxy_redirect http://localhost:8000/two/ http://frontend/one/;
Location: http://localhost:8000/two/some/uri/.
というレスポンスヘッダが返ってきたら、nginx はそれを
Location: http://frontend/one/some/uri/.
に書き換える。デフォルトは proxy_pass にならう。下記の二つの設定は同じになる。
location /one/ { proxy_pass http://upstream:port/two/; proxy_redirect default; } location /one/ { proxy_pass http://upstream:port/two/; proxy_redirect http://upstream:port/two/ /one/; }
オフにするには下記のようにする。
proxy_redirect off;
proxy_pass
プロキシ先のサーバのURI を指定する。
proxy_pass http://localhost:8000/uri/; proxy_pass http://unix:/path/to/backend.socket:/uri/;
Host ヘッダがリクエストに含まれていなかったら、proxy_pass の値が使われる。ちゃんと送りたければ下記のようにする
proxy_set_header Host $host;
もし upstream なサーバが ssl 使ってるなら、明示的に https:// を指定して、かつポートも upstream の設定に書いておいた方が良い
upstream backend-secure { server 10.0.0.20:443; } server { listen 10.0.0.1:443; location / { proxy_pass https://backend-secure; } }