wtatsuruの技術方面のブログ

はてなスタッフ id:wtatsuru です。日常ブログはこちら https://tatsuru.hatenablog.com/

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 だからよくない。もといい方法知ってたら教えて下さい。

はてなで一緒に働きませんか?