HTTPサーバとしてnginxを使っているケースは多いかと思います。しかし設定に関する情報はまだまだ多くはなく、動くように設定はしても、それがベストなのかどうか判断できない方も多いのではないでしょうか。 そんな方にお勧めなのがGixyです。nginxの設定ファイルを解析して改善案を提示してくれます。

Gixyの使い方

Gixyのインストールは pip でできます。

pip install gixy

後はnginxの設定ファイルを指定するだけです。

$ gixy /path/to/nginx.conf

==================== Results ===================

Problem: [host_spoofing] The proxied Host header may be spoofed.
Description: In most cases "$host" variable are more appropriate, just use it.
Additional info: https://github.com/yandex/gixy/blob/master/docs/en/plugins/hostspoofing.md
Pseudo config:
server {
	server_name www.moongift.jp moongift.jp oss.moongift.jp fw.moongift.jp;

	location / {
		proxy_set_header Host $http_host;
	}

	location @fallback {
		proxy_set_header Host $http_host;
	}

	location /_apps {
		proxy_set_header Host $http_host;
	}
}


==================== Summary ===================
Total issues:
    Unspecified: 0
    Low: 0
    Medium: 3
    High: 0

そうすると修正すべき点と、どうすべきかを提示してくれます。今回の場合はヘッダーにホスト情報入れる時には http_host ではなく host を使うべきと指摘しています。そこで修正して再度チェックを行います。

$ gixy /path/to/nginx.conf

==================== Results ===================
No issues found.

==================== Summary ===================
Total issues:
    Unspecified: 0
    Low: 0
    Medium: 0
    High: 0

このようにエラーが消えて安心して運用できるようになります。

動くレベルと正しく動くレベルには大きな開きがあります。思わぬセキュリティリスクがある状態で運用している可能性もあります。そうした時にGixyのようなチェックツールを使うとベストプラクティスに基づいてチェックしてくれるので便利です。

GixyはPython製のオープンソース・ソフトウェア(Mozilla Public License)です。

yandex/gixy: Nginx configuration static analyzer