zuntan02のはてなブログ

備忘録的なものです。時々職場の技術者ブログにも転記してますが、メインはこちらで。

nginxで特定IP以外からのアクセスにメンテ表示

nginxで特定IP以外からのアクセスにメンテ表示する方法メモ

1)メンテ用confファイルを作成

仮に /etc/nginx/function/mainte.conf とします。

if ($uri = '/mainte.html') { set $is_allow_ip 1;}  ←mainte.htmlへのリクエストは許可しないとループしちゃう
if ($remote_addr = '127.0.0.1') { set $is_allow_ip 1;} ←許可IPを書いていく
if ($remote_addr = 'xxx.xxx.xxx.xxx') { set $is_allow_ip 1;}
if ($remote_addr = 'xxx.xxx.xxx.xxx') { set $is_allow_ip 1;}

if ($is_allow_ip != '1') {
    rewrite ^(.*)$ http://hogefuga/mainte.html? redirect;
}

※ELB配下などの場合は

if ($http_x_forwarded_for = 'xxx.xxx.xxx.xxx') { set $is_allow_ip 1;}

で。

2)nginxのconfファイルから上記mainte.confをincludeする
server {
	……
	include /etc/nginx/function/mainte.conf;
	……
	}

メンテ解除は上記をコメントするか、またはincludeしているファイルの中身を消すなどで。

【AWS Certificate Manager】複数ドメインの証明書を同一ELBで処理する場合の上限

zuntan02.hateblo.jp
これの続き

【問題】

デフォルトだと一つの証明セットに別名を10個以上追加すると
Certificate has too many domains.
というエラーになって申請できない。

docs.aws.amazon.com

Item Default Limit
Number of ACM Certificates 100
Number of domain names per ACM Certificate 10. See the information following this table.

上記によれば上限緩和申請が効く模様、でも証明書に別名を「追加」できるわけじゃなくて、マルチドメイン証明書の再作成を都度行うことになるので、例えば別名が100個あったら、その100個の承認メールすべてを受信、承認するまで証明書が更新できないことになる。そういう業務オーバーヘッドを認識したうえで申請しろよ、と書いてある。確かにな……でもELB一台2000円くらいするじゃないですか。うーん……

ACM証明書ごとのドメイン名の数:上限緩和申請してみた

https://console.aws.amazon.com/support/home?region=ap-northeast-1#/case/create?issueType=service-limit-increase&limitType=service-code-acm
AWSサポートダッシュボードから50まで上限緩和してほしい旨申請してみた

3日後以下の回答あり

> 制限緩和のリクエスト 1
> サービス: Certificate Manager
> リージョン: アジアパシフィック(東京)
> 制限の名前: (ACM) ACM 証明書ごとのドメイン名の数
> 申請する上限数: 50
> ------------

ご依頼頂きました通り、東京リージョンの ACM 証明書ごとのドメイン名の数の上限値を 50 に設定いたしました。
反映されるまでに数分かかる場合がございますが、予めご了承くださいませ。

エラー出なくなった。20個くらいならまだ運用的には特に問題ない気がする(すべてのドメインについ承認依頼メールを管理アカウントに転送するようにしておけばらくちん)

nginxでのベーシック認証のかけかた

nginxでのベーシック認証のかけかた
参考:
qiita.com

.htpasswd ファイルの作成

# htpasswdコマンドが必要

yum install httpd-tools

ユーザ名とパスワードを追加。

(初回)htpasswd -c /etc/nginx/.htpasswd username
→2回目以降は-cを外さないと.htpasswdが上書きされるので注意
(2回目以降)htpasswd /etc/nginx/.htpasswd username

nginxの設定ファイルの追記

.htpasswd ファイルを読み込み、Basic 認証を適用。
/etc/nginx/nginx.conf

server {
    listen 80;
    root /usr/share/nginx/html;
    index index.html index.htm;

    auth_basic "Restricted";                   # 認証時に表示されるメッセージ
    auth_basic_user_file /etc/nginx/.htpasswd; # .htpasswdファイルのパス
}
特定のIPにはBasic認証を行わない場合

【参考】
http://d.hatena.ne.jp/podhmo/20110311/1299817584

server {
    listen 80;
    root /usr/share/nginx/html;
    index index.html index.htm;

    # add Basic Auth
    satisfy any;
    allow 許可IP1;
    allow 許可IP2;
    deny all;

    auth_basic "Restricted";                   # 認証時に表示されるメッセージ
    auth_basic_user_file /etc/nginx/.htpasswd; # .htpasswdファイルのパス
}


または

特定のIPにはBasic認証を行わない場合(CloudFront+ELB配下)
server {
    listen 80;
    root /usr/share/nginx/html;
    index index.html index.htm;

    # Auth Basic
    auth_basic_user_file /etc/nginx/.htpasswd; # .htpasswdファイルのパス

    set $allow 0;
    if ( $http_x_forwarded_for ~ 111\.111\.111\.111 ){ set $allow 1; }
    if ( $http_x_forwarded_for ~ 111\.111\.111\.112 ){ set $allow 1; }
    if ( $http_user_agent = "ELB-HealthChecker/2.0" ) { set $allow 1; }  #上位TGなどからのヘルスチェックはパスするようにする 

    if ( $allow = 1) {
        set $auth_basic off; #Basic認証off
    }

    if ($allow = "0"){
        set $auth_basic "Restricted";          # 認証時に表示されるメッセージ
    }
    
    auth_basic $auth_basic;
    }

反映

service nginx configtest
service nginx reload

感熱紙FAXの現在について(2016)

実家の感熱紙FAX(NECのSpeax)が壊れたらしい。FAXがないと困るのは親父の趣味の会だけらしいのだけど(月イチ程度で送受信してる)、機械が壊れたことで趣味を辞める、みたいなのはさみしいよなぁと思って、家電店にFAXを探しに出かけた。でも手差しの普通紙FAX(巨大な熱転写インクフィルムがあるタイプ)ばかりでロールの感熱紙がタイプが見当たらない。
「画面で確認→必要なものだけ印刷」というのが最近の定番っぽいけど、もう「紙が吐き出されていることで受信を確認する」に慣れきっている人に、このひと手間を強制するのはNGだと思った。

ネットでざっと調べた限り、現在手に入るのは


BROTHER パーソナル感熱紙ファクシミリ FAX-210
(1万円)


パナソニック KX-PW211DL
(2.2万円)

の2機種だけであるようだ。

今回の用途だと、前者しかない……

自分が利用するのであればハードオフで中古を購入、ということも考えたのだけど、
メンテナンスのことを考えるとやっぱり新品だろうし。

購入後に何かレポートするようなことがあれば追記します。

Y!mobileのSTREAM S 302HWの人が機種変更するメモ(2016年09月現在)

ワイモバイルの302HW契約してからそろそろ2年が経過しつつあるので
機種変更しようかなーと思ってメモ。
なんか2018年には使えなくなるらしく、該当機種を持っている人には乗り換え優遇プランがある模様。
www.ymobile.jp

機種変更

ご案内をお受け取りのお客さまへご提案|Y!mobile(ワイモバイル)
こちらのサイトから

製品カテゴリ:スマートフォン/携帯電話
機種名:STREAM S(302HW)

を選択し、「あなたにおすすめの機種・プラン」にて以下のいずれかを選択

・そのまま503HWを選択した場合

503HW

→とにかく安いがOSがAndroid5。同型機のP8LiteはAndroid6まで上がっているのでそこまではいける?あとバッテリーの持ちが厳しいらしい。
https://online-store.ymobile.jp/regi/?oid=503HW&plan=380M42&mskmKbOnly=4
スマホプランS
月々のお支払額:2,138円/月
※ワンキュッパ割(翌月から12ヵ月間-1080円)が終わった後は3,218円/月

・「他の最新スマートフォン」を選択する場合

Nexus5X(16GBモデル)

→現状Android7までUpgrade可能。SDカードが使えないのが痛い。あとUSBがタイプCなのが不評っぽい。
https://online-store.ymobile.jp/regi/?oid=nexus5X16&plan=360M42&mskmKbOnly=4
スマホプランS
月々のお支払額:2,894円/月
※ワンキュッパ割(翌月から12ヵ月間-1080円)が終わった後は3,974円/月

Nexus5X(32GBモデル)

https://online-store.ymobile.jp/regi/?oid=nexus5X32&plan=370S42&mskmKbOnly=4
スマホプランS
月々のお支払額:3,434円/月
※ワンキュッパ割(翌月から12ヵ月間-1080円)が終わった後は4,514円/月

507SH(Android One)

→AndroidOneなのでこの先も2年ほど使える。SDカード使える、IPX8防水、ワンセグと全部入り。ワンセグ見ないけど。
https://online-store.ymobile.jp/regi/?oid=507SH&&plan=560M32&mskmKbOnly=4
スマホプランS
月々のお支払額:3,218円/月
※ワンキュッパ割(翌月から12ヵ月間-1080円)が終わった後は4,298円/月

iPhone5s 16GB

https://online-store.ymobile.jp/regi/?oid=iPhone5s16&plan=490S42&mskmKbOnly=4
スマホプランS
月々のお支払額:2,894円/月
※ワンキュッパ割(翌月から12ヵ月間-1080円)が終わった後は3,974円/月

iPhone5s 32GB

https://online-store.ymobile.jp/regi/?oid=iPhone5s32&plan=500S42&mskmKbOnly=4
スマホプランS
月々のお支払額:3,218円/月
※ワンキュッパ割(翌月から12ヵ月間-1080円)が終わった後は4,298円/月


単純にCPUスペックから考えるとNexus5X(32GB)かなぁ。もしくはiPhone5s(32GB)。
どっちもSDカードさせないからメモリは多いに越したことはない。

【追記】

結局Nexus5X(32GBモデル)に乗り換えました。個人的には満足しています。たとえNexusシリーズのラストスタンドだとしても……!
特に背面の指紋認証が素晴らしいですよ。自分の手汗がひどいせいか、iPhone5sでは失敗しがちだったのでそんなものかと思っていたけど、Nexus5Xのは百発百中。あとポケモンGoの起動が劇的に早くなった!


■302HWは下取りに出した幾らくらい?
https://k-tai-iosys.com/items/MzQ4MzhhY2/k-tai-iosys.com
2~5,000くらい。けっこういくな。

■下取りに出す前に初期化する手順
ascii.jp

【AWS】ELBの証明書情報確認

SSL証明書ACMでの証明書に切り替えていくにあたり、そもそもなんていう証明書がおかれているのかを確認したかった。

aws iam get-server-certificate --server-certificate-name <証明書名>

出力されたデータの"CertificateBody"に含まれるデータを、\n区切りを改行にしてcrtファイルを復元し、以下のコマンドで中身を確認

openssl x509 -text -noout -in hogehoge.crt

でSubjectが取れる。