2
2

More than 5 years have passed since last update.

[個人的な備忘録とコピペ用]nginxでBasic認証

Last updated at Posted at 2017-11-28

目的

  • nginxの基本的なことを知っておく。
  • nginxのインストールする。
  • Basic認証する。
  • 一番簡単な静的ファイルのHTTPサーバーを立てる。
  • できる限りコピペで動くようにする。

作業ログ

今回は、RaspberryPi3上で作業する。

外へ見せるポートは8080
基本となるイメージがresin/rpi-raspbian
イメージ名がnginx_basic

sudo docker run --name nginx_basic -p 8080:80 -it -d resin/rpi-raspbian

パッケージをインストールする。vimを入れているのは編集用
apache2-utilsがbasic認証用の設定ファイルを作るために必要
参考:Nginx で Basic 認証

$ sudo apt-get update
$ sudo apt-get install vim nginx apache2-utils 

Basic認証するための設定ファイルを作る

ユーザー名はkotauchisunsun
パスワードはtest
/etc/nginx/.htpasswdにファイルをおく

htpasswd -c /etc/nginx/.htpasswd kotauchisunsun
New password:                #ここでパスワードのtestを入れる
Re-type new password:        #もう一度testを入れる
Adding password for user kotauchisunsun

ちなみにこんなファイルができた。

$ cat /etc/nginx/.htpasswd 
kotauchisunsun:$apr1$HiaGl1hg$iw0W33W4GT34w.RzW1Pzc1

テスト用の静的なhtmlファイルを置く

静的なhtmlは/var/www/html/に置くと良い。

$ echo "Hello" > /var/www/html/hello.html

nginx.confを編集する

自分が参考にしたデフォルト設定を表示

$ cat /etc/nginx/nginx.conf 
user www-data;
worker_processes auto;
pid /run/nginx.pid;
include /etc/nginx/modules-enabled/*.conf;

events {
    worker_connections 768;
    # multi_accept on;
}

http {

    ##
    # Basic Settings
    ##

    sendfile on;
    tcp_nopush on;
    tcp_nodelay on;
    keepalive_timeout 65;
    types_hash_max_size 2048;
    # server_tokens off;

    # server_names_hash_bucket_size 64;
    # server_name_in_redirect off;

    include /etc/nginx/mime.types;
    default_type application/octet-stream;

    ##
    # SSL Settings
    ##

    ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE
    ssl_prefer_server_ciphers on;

    ##
    # Logging Settings
    ##

    access_log /var/log/nginx/access.log;
    error_log /var/log/nginx/error.log;

    ##
    # Gzip Settings
    ##

    gzip on;
    gzip_disable "msie6";

    # gzip_vary on;
    # gzip_proxied any;
    # gzip_comp_level 6;
    # gzip_buffers 16 8k;
    # gzip_http_version 1.1;
    # gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;

    ##
    # Virtual Host Configs
    ##

    include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-enabled/*;
}


#mail {
#   # See sample authentication script at:
#   # http://wiki.nginx.org/ImapAuthenticateWithApachePhpScript
# 
#   # auth_http localhost/auth.php;
#   # pop3_capabilities "TOP" "USER";
#   # imap_capabilities "IMAP4rev1" "UIDPLUS";
# 
#   server {
#       listen     localhost:110;
#       protocol   pop3;
#       proxy      on;
#   }
# 
#   server {
#       listen     localhost:143;
#       protocol   imap;
#       proxy      on;
#   }
#}

一応バックアップをとる

$ cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.orig

nginx.confの変更。
ポート80番で待つ。
サーバー名はとりあえずhogehoge.com
静的ファイルは/var/www/htmlにおく。
basic認証の設定ファイルは、/etc/nginx/.htpasswdにおく。
auth_basicでWWW-Authenticate: Basic realm=で返す文字列を入れる。
auth_basic_user_fileにbasic認証の設定ファイル(/etc/nginx/.htpasswd)を記載。

$ diff /etc/nginx/nginx.conf /etc/nginx/nginx.conf.orig 
11,20d10
<   server { 
<       listen 80;
<       server_name hogehoge.com;
< 
<       location / {
<       root /var/www/html/;        
<       auth_basic "Show Message";                  
<       auth_basic_user_file /etc/nginx/.htpasswd;
<       }
<   }

WWW-Authenticateについて

WWW-Authenticate
https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/WWW-Authenticate

Syntax

WWW-Authenticate: <type> realm=<realm>


Authentication type. A common type is "Basic". IANA maintains a list of Authentication schemes.

認証タイプ。普通は"Basic"。IANAが認証方式のリストを管理してる。

realm=
A description of the protected area. If no realm is specified, clients often display a formatted hostname instead.

保護されたエリアの説明。もしrealmが明示されないとき、クライアントはフォーマットされたホスト名を代わりに表示する。

Chromeで確認したが画面上には特に出てこなかった。

設定反映

とりあえずnginx自体を再起動して設定反映

$ sudo service nginx restart

動作確認

curlは -u ユーザー名:パスワード で認証付きリクエストできる

$ curl 192.168.0.7:8080/hello.html -H "Host:hogehoge.com" -u kotauchisunsun:test
Hello

ブラウザで確認したいときは、/etc/hostsを書き換える

192.168.0.7 hogehoge.com

http://hogehoge.com:8080/hello.htmlにアクセス

参考

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2