ELB配下でHTTPをHTTPSにリダイレクト

表題の通り。ELB配下で、ELBでSSLを終端としている場合に表題を行いたい。

■ 環境

  • AWS ELB
  • nginx 1.10.3
  • Ubuntu 16.04

■ nginx

redashで使用しているサーバにて行う。ちなみにredashが提供しているAMIをそのまま起動し、接続元は制限して使っている。

対象のファイルは下記。

$ vi /etc/nginx/sites-available/redash

内容は下記のように”server“ディレクティブ内に追加した。

  if ($http_x_forwarded_proto != https) {
    return 302 https://$host$request_uri;
  }

前回の`httpd`と同様に、リターンコードは”302“として様子を見ている。

これでほとんどがHTTPS通信になったと思われる。

以上。

■ 関連

HTTPをHTTPSにリダイレクト

接続元IPで遮断

nginxで表題を行いたいのだが、改めてドキュメントを確認したところ、知らなかったのでメモ。

■ 環境

  • nginx 1.12.1

■ deny

`deny`を入れる時はいつも下記のようにしていた。

location / {
    deny  XXX.XXX.XXX.XXX;
    allow all;
}

上記のように”location”ディレクティブに書いていた。nginxで複数のFQDNを使用していて、全てのFQDNで共通の”deny“を指定したく、また各FQDN毎のログファイルに”403“のログを記載したいなと思い改めてドキュメントを確認してみた。

Module ngx_http_access_module
http://nginx.org/en/docs/http/ngx_http_access_module.html

Directives“に”http“が記載されているではないか。動きを確認する。

各”server“ディレクティブは個別のファイルに記載し、”http“ディレクティブでは”include“しているので、念のため”include“前に”deny“を記載してみた。

http {
    :
  deny XXX.XXX.XXX.XXX;

  include conf.d/*.conf;
}

設定を適用させブラウザでアクセスしたところ、想定通り”403“が返ってきた。これは問題ない。ではこの”403“のログがどこに出力されているか?を確認したところ、FQDN毎に設定しているログファイルに出力されていた。これでやりたいことができそうだ。

以上。

■ 関連

アクセス制限

cookieをログに出力

nginxにおいて表題の通り。

■ 環境

  • nginx 1.12.2

■ $http_cookie

nginx.conf“の”http“コンテキスト内にある”log_format“を編集する。今回は下記のようにした。

log_format  post  '$remote_addr - $remote_user [$time_local] "$request" '
                  '$status $body_bytes_sent "$http_referer" '
                  '"$http_user_agent" cookie[$http_cookie]';

ログには下記のように出力されるようになった。

XXX.XXX.XXX.XXX - - [06/Apr/2018:19:04:21 +0900] "GET /example/path HTTP/1.1" 200 1346 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36" cookie[key1=value1; key2=value2]

ちなみに`curl`でcookieを送って確認するには下記のようにした。

$ curl -b "key1=value1; key2=value2" http://XXX.XXX.XXX.XXX/

以上。

PROPFIND Method

表題のMethodって何だ?となったのでメモ。

■ 環境

  • nginx 1.12.2

■ PROPFIND

今日たまたま気がついたのだが、下記のようなログが出力されていた。

XXX.XXX.XXX.XXX - - [05/Apr/2018:13:07:49 +0900] "PROPFIND / HTTP/1.1" 405 166 "-" "-"

PROPFIND“というMethodって何だ?”405“ってステータス何だっけ?と。

405 Method Not Allowed

PROPFIND“というMethodが許可されていないと。許可したつもりも存在すらも知らなかった。

PROPFIND Method
https://msdn.microsoft.com/ja-jp/library/aa142960

WebDAV“で使われるMethodのようである。無視ままで問題なさそうである。

以上。

request_time or upstream_response_time

nginxにおいて表題の件について。

■ 環境

  • nginx 1.12.2

■ upstream_response_time

先日のエントリにおいて、”request_time“と”upstream_response_time“が同じ数値になったと記載した。同一ホスト内でかと思い、他のホストにproxyしてみた。しかし結果はやはり同じ数値が記載された。

よくよく考えてみればnginx自体に掛かっている処理はほとんどなく、proxy先での処理と転送処理だけなので当然といえば当然の結果であった。nginx自体でもっといろいろな処理をしている場合にはこの数値は変わってくるのであろうか。

単なるメモである。

以上。

■ 関連

upstream_response_time