nginxやってみた


備忘録として...

nginxとは

読み方はエンジンエックス。Apacheと同様でフリーでオープンソースなWebサーバ。

環境

  • OS : Windows 10
  • ngimx 1.10.2

とりあえず動かしてみた

nginx起動

nginx-X.X.Xのディレクトリ直下へ移動して

start nginx

と入力する。

これで起動と思ったら、起動しない。
調べてみると

failed (1113: No mapping for the Unicode character exists in the target multi-byte code page)

と出ている。どうやらnginxを保管したディレクトリに日本語が含まれているのが問題。そこで、日本語が含まれないディレクトリへnginxを保管して再度、nginxを起動後、ブラウザを開いてhttp://localhost と入力。

すると、

と表示されてとりあえず成功。

nginxを止めるときは

nginx -s quit

でおk。

nginxの設定の更新

nginxの設定ファイル(~\nginx-1.10.2\conf\nginx.conf)を変えて、更新するときは

nginx -s reload

と入力。

help

nginx -h

nginxの設定(nginx.conf)

nginx.confファイルを開くといろいろと書かれているが、そこは後でやるか置いといて、一部抜粋。

http {
    server {
    }
}

これが基本的な設定の構造となり、このserverの中にいろいろ設定を加えていく。

locationブロック

例えば、こんなの

location / {
    root html;
}

これは元々設定されている物を抜粋したものだが、これは
locationの後にポート番号もしくはサーバー名の後に続く接頭辞を設定し、rootの所でnginx-x.x.x下のディレクトリ(ここではルートディレクトリ)を設定している。

では、新しいディレクトリを設定してみることにする。
ここで、locationブロックを追加するのだが、これは同じserverブロック内で大丈夫。nginx-x.x.xフォルダの中に元々、htmlというフォルダがあるのでその中にtestというフォルダを作ってそのフォルダ内にhello.htmlを作る(Hello Worldが表示される)。

location /test/ {
    root html;
}

nginx -s reloadと入力して更新してから、ブラウザでhttp://localhost/test/hello.html と入力する。無事にHello Worldと表示されるはずだ。
これでhtmlフォルダ内のtestフォルダ内のファイルを覗くことができるようになった。

Basic認証

nginxでBasic認証をしてみました。

まず、windowsで.htpasswdの設定をしないといけない。
一番楽だったのが、このサイト。このサイトにあるUserとPasswordに好きなものを入れてCreate .htpasswd Fileをクリックして出てきたテキストをコピー&ペーストしてローカルのどこかに.htpasswdのファイル名で保存すればいい。

nginxのBasic通信の設定

location / {
    root   html;
    auth_basic "Restricted";  #この部分を追加
    auth_basic_user_file .htpasswd;  #この部分を追加
    index  index.html index.htm;
}

これを保存してnginx -s reloadしてhttp://localhost/ でアクセス(一応ブラウザの機能でプライベートウィンドウで開いてください)。

すると、

と認証の確認をしてくれて、これでBasic認証はできた。登録したユーザー名とパスワードを入力して、

がなのが表示されれば成功。
認証を拒否してアクセスすると、

が出て確認終了。

おわり

まだまだnginxでできることややりたいことがあると思うので、その都度更新していければいいかと。