wtatsuru's blog

id:wtatsuru のメモ

nginx のシンタックスハイライトが効くと聞いて

IP アドレスホワイトリスト+それ以外からはbasic認証、というのをやりたいと思ったんだけど、auth_basic が if の中に入れられないので仕方なくこうしたという話。

perl_set $allowed '
    sub {
        my $r = shift;
        my $remote_addr = $r->remote_addr;
        return "1" if $remote_addr =~ /^127./;
        return "0";
    }
';
server {
    listen 80;

    location / {
        if ($allowed ~ "1") {
            # no authentication
            proxy_pass http://app;
        }
        # basic auth
        proxy_pass http://localhost:1080;
    }
}

server {
    listen 1080;

    location / {
        auth_basic "Authentication Required";
        auth_basic_user_file "/etc/nginx/htpasswd";
        proxy_pass http://app;
    }
}

UNIX ソケットでいいとかそういうのは置いといて、どうやるのがいいんだろう。if 使ってるのも evil だからよくない。もといい方法知ってたら教えて下さい。

「インターネットで生活を楽しく豊かにしたい」スタッフ、募集中。
採用情報 - 株式会社はてな