Submit Search
nginx入門
•
163 likes
•
54,132 views
Takashi Takizawa
Follow
第10回静岡ITPro勉強会インフラ部 「nginx入門」資料
Read less
Read more
1 of 73
Download now
Downloaded 378 times
More Related Content
nginx入門
1.
第10回 静岡ITPro勉強会 インフラ部 nginx⼊入⾨門 滝澤
隆史 株式会社ハートビーツ MSP事業部 所属 http://heartbeats.jp/ 1 2013-‐‑‒05-‐‑‒18nginx⼊入⾨門
2.
私は誰 • ⽒氏名: 滝澤
隆史 @ttkzw • 所属: 株式会社ハートビーツ ▫ サーバの構築・運⽤用や 24時間365⽇日の有⼈人監視をやっている会社 ▫ いわゆるMSP(マネージド サービス プロバイ ダ) • nginxとの関わり ▫ 所属会社の技術ブログ「nginx連載」 – http://heartbeats.jp/hbblog/nginx/ ▫ Software Design 2012年年12⽉月号 第2特集「⾼高速・⾼高機能HTTPサーバ Nginx構築・ 設定マニュアル」 2 2013-‐‑‒05-‐‑‒18nginx⼊入⾨門
3.
アジェンダ • nginxのインストール • nginxの設定 •
ウェブアプリケーションとの連携 3 2013-‐‑‒05-‐‑‒18nginx⼊入⾨門
4.
本⽇日の勉強会の進め⽅方 • セミナーではなく勉強会です。 • 随時質問を受け付けます。 •
質問がある⽅方は挙⼿手をお願いします。 2013-‐‑‒05-‐‑‒18nginx⼊入⾨門 4
5.
5 2013-‐‑‒05-‐‑‒18nginx⼊入⾨門
6.
インストール⽅方法 • nginx公式パッケージ • OSやサードパーティのリポジトリ •
ビルドしてインストール 2013-‐‑‒05-‐‑‒18nginx⼊入⾨門 6
7.
nginx公式パッケージ • ダウンロードサイト ▫ http://nginx.org/en/download.html •
対応OS ▫ Windows ▫ Linux – RHEL 5, RHEL 6, CentOS 5, CentOS 6 – Debian GNU/Linux – Ubuntu • 使い⽅方 ▫ リポジトリを登録してyumやapt-‐‑‒getでパッケー ジをインストール 2013-‐‑‒05-‐‑‒18nginx⼊入⾨門 7
8.
OSやサードパーティのリポジトリ • Linuxディストリビューション ▫ RHEL/CentOS
-‐‑‒ Fedora EPEL ▫ Fedora ▫ Debian GNU/Linux ▫ Ubuntu ▫ Gentoo Portage • *BSD、他 ▫ Mac OS X -‐‑‒ homebrew ▫ Mac OS X -‐‑‒ MacPorts ▫ FreeBSD Ports ▫ NetBSD Packages Collection ▫ OpenBSD Ports 2013-‐‑‒05-‐‑‒18nginx⼊入⾨門 8 ほとんどの環境 でパッケージは 存在する。
9.
ビルドしてインストール • ビルドする必要があるケース ▫ 提供されているパッケージに必要なモジュー ルが組み込まれていない場合 ▫
サードパーティモジュールを追加したい場合 ▫ ちょっと古い環境でOpenSSL 1.0.1を使いた い場合(SPDYやTLS v1.1,v1.2対応のため) ▫ 単にビルドしたい! 2013-‐‑‒05-‐‑‒18nginx⼊入⾨門 9
10.
ビルドしてインストール • ./configureの時に組み込むモジュールを指定す る。 ▫ オプショナルモジュール ▫
サードパーティモジュール 2013-‐‑‒05-‐‑‒18nginx⼊入⾨門 10 ./configure --with-http_XXXX_module --add-module=/path/to/module --with-openssl=/path/to/openssl-1.0.1e
11.
ビルドしてインストール • configureの例例 2013-‐‑‒05-‐‑‒18nginx⼊入⾨門 11 ./configure --prefix=/usr/share/nginx
--sbin-path=/usr/sbin/nginx --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --http-client-body-temp-path=/var/lib/nginx/tmp/client_body --http-proxy-temp-path=/var/lib/nginx/tmp/proxy --http-fastcgi-temp-path=/var/lib/nginx/tmp/fastcgi --http-uwsgi-temp-path=/var/lib/nginx/tmp/uwsgi --http-scgi-temp-path=/var/lib/nginx/tmp/scgi --pid-path=/var/run/nginx.pid --lock-path=/var/lock/subsys/nginx --user=nginx --group=nginx --with-file-aio --with-ipv6 --with-http_ssl_module --with-http_spdy_module --with-http_realip_module --with-http_addition_module --with-http_xslt_module --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_random_index_module --with-http_secure_link_module --with-http_stub_status_module --add-module=$HOME/src/ngx_cache_purge-2.1 --add-module=$HOME/src/ngx_devel_kit-0.2.18 --add-module=$HOME/src/lua-nginx-module-0.8.1 --add-module=$HOME/src/modsecurity-apache_2.7.3/nginx/modsecurity サードパーティ モジュール オプショナル モジュール
12.
モジュールの確認 • "nginx -‐‑‒V"で./configureのオプションが確認で きる。 •
→オプショナルモジュールとサードパーティモ ジュールの指定が確認できる。 2013-‐‑‒05-‐‑‒18nginx⼊入⾨門 12
13.
公式パッケージのインストール例例 CentOS 6の場合 • 公式サイト ▫
http://nginx.org/ • → "download" ▫ http://nginx.org/en/download.html • → "Linux packages for stable version" ▫ http://nginx.org/en/linux_̲packages.html • → "CentOS 6"のリンクのRPMパッケージをインス トール 2013-‐‑‒05-‐‑‒18nginx⼊入⾨門 13
14.
公式パッケージのインストール例例 CentOS 6の場合 2013-‐‑‒05-‐‑‒18nginx⼊入⾨門 14 $ sudo
yum install http://nginx.org/packages/centos/6/ noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm $ sudo yum install nginx $ sudo service nginx start
15.
2013-‐‑‒05-‐‑‒18nginx⼊入⾨門 15
16.
2013-‐‑‒05-‐‑‒18nginx⼊入⾨門 16
17.
設定ファイル • 設定ファイル ▫ /etc/nginx/nginx.conf 2013-‐‑‒05-‐‑‒18nginx⼊入⾨門 17 ./configure時に指定
18.
includeディレクティブ • 設定ファイル中にincludeディレクティブを使う と他の設定ファイルを読み込むことができる ▫ include
/etc/nginx/conf.d/*.conf; • glob対応 ▫ "*.conf"の形式が利利⽤用可能 ▫ ただし、バージョン1.2.6以前では読む込む ファイルの順番はソートされない 2013-‐‑‒05-‐‑‒18nginx⼊入⾨門 18 src/os/unix/ngx_̲files.c の ngx_̲open_̲glob()より n = glob((char *) gl->pattern, GLOB_NOSORT, NULL, &gl->pglob);
19.
インストールされる設定ファイル • nginx.conf以外にもインストールされる設定 ファイルがある。 ▫ $
ls -1 /etc/nginx fastcgi.conf fastcgi_params koi-utf koi-win mime.types nginx.conf scgi_params uwsgi_params win-utf 2013-‐‑‒05-‐‑‒18nginx⼊入⾨門 19
20.
インストールされる設定ファイル ファイル名 説明 mime.types MIMEタイプと拡張⼦子の関連付けを定義したファイル。 fastcgi_̲params
FastCGI⽤用の変数を定義するファイル。 fastcgi_̲paramディレクティブの設定集。 fastcgi.conf fastcgi_̲paramsと同じ。 パッケージによっては同梱されない場合もある。 scgi_̲params SCGI⽤用の変数を定義するファイル。 scgi_̲paramディレクティブによる設定集。 uwsgi_̲params uWSGI⽤用の変数を定義するファイル。 uwsgi_̲paramディレクティブによる設定集。 2013-‐‑‒05-‐‑‒18nginx⼊入⾨門 20
21.
インストールされる設定ファイル ファイル名 説明 koi-‐‑‒utf ロシア語の⽂文字エンコーディングkoi8-‐‑‒rとUTF-‐‑‒8の⽂文字 コードのマッピングを⾏行行うファイル。 koi-‐‑‒win
ロシア語の⽂文字エンコーディングwindows-‐‑‒1251とUTF-‐‑‒8 の⽂文字コードのマッピングを⾏行行うファイル。 win-‐‑‒utf ロシア語の⽂文字エンコーディングwindows-‐‑‒1251とUTF-‐‑‒8 の⽂文字コードのマッピングを⾏行行うファイル。 2013-‐‑‒05-‐‑‒18nginx⼊入⾨門 21 この3つのファイルは通常は使わない。 ロシア語の⽂文字エンコーディングの変換 を⾏行行う場合のみ利利⽤用。
22.
インストールされる設定ファイル • ファイル名は特別な意味はない。 • 利利⽤用するには ▫
設定ファイルからincludeディレクティブによ りこのファイル名を指定して読み込む ▫ 例例 – include /etc/nginx/mime.types; – include mime.types; 2013-‐‑‒05-‐‑‒18nginx⼊入⾨門 22 nginx.confファイルのある ディレクトリからの相対パス
23.
2013-‐‑‒05-‐‑‒18nginx⼊入⾨門 23
24.
ディレクティブ • 設定ファイルにディレクティブ(設定の命令令) を書くことにより設定を⾏行行う。 • ディレクティブをどこにでも書けるわけではな い。 2013-‐‑‒05-‐‑‒18nginx⼊入⾨門 24
25.
events { } http { server
{ location URI_PATH { } location URI_PATH { ... } ... } server { ... } } 2013-‐‑‒05-‐‑‒18nginx⼊入⾨門 25 mainコンテキスト eventsコンテキスト httpコンテキスト serverコンテキスト locationコンテキスト 主にプロセスの制御に関する設定 接続処理理に関する設定 HTTPサーバ全体の設定 バーチャルホスト毎の設定 URI毎の設定 nginx.conf ディレクティブ毎に記述できる コンテキストが決まっている。
26.
www.example.org.conf 2013-‐‑‒05-‐‑‒18nginx⼊入⾨門 26 events { } http { include
conf.d/*.conf } mainコンテキスト eventsコンテキスト httpコンテキスト server { location URI_PATH { } location URI_PATH { ... } ... } serverコンテキスト locationコンテキスト server { location URI_PATH { } location URI_PATH { ... } ... } serverコンテキスト locationコンテキスト nginx.conf www.example.jp.conf バーチャルサーバ毎の設定を 別ファイルにできる。
27.
設定ファイルを書いてみよう • 設定ファイルのサンプルを⾒見見ながら設定ファイ ルを書いてみよう。 2013-‐‑‒05-‐‑‒18nginx⼊入⾨門 27
28.
user nginx; worker_processes auto; worker_rlimit_nofile
2048; error_log /var/log/nginx/error.log warn; pid /var/run/nginx.pid; mainコンテキスト 2013-‐‑‒05-‐‑‒18nginx⼊入⾨門 28 workerプロセスの実⾏行行権限のユーザー workerのプロセス数。 CPUのコア数を指定するとよい。 1.2.5以降降で"auto"を指定可能。 エラーログの出⼒力力先とロギングレベル。 masterプロセスのプロセスIDを保存 するファイル。 $ ps auxf USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 27593 0.0 2.4 137552 24772 ? Ss 01:06 0:00 nginx: master process nginx 27594 0.0 2.5 137880 25624 ? S 01:06 0:00 _ nginx: worker process nginx 27595 0.0 2.5 137880 25624 ? S 01:06 0:00 _ nginx: worker process ファイルオープン数。 worker_connectionsの値以上を設定する。
29.
events { worker_connections 1024; } eventsコンテキスト 2013-‐‑‒05-‐‑‒18nginx⼊入⾨門 29 ⼀一つのworkerプロセスが同時に処理理でき る最⼤大コネクション数。 リバースプロキシーとして動作する場合 はバックエンドとの接続数も含む。 デフォルト値は512。
30.
http { include /etc/nginx/mime.types; default_type
application/octet-stream; log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log /var/log/nginx/access.log main; httpコンテキスト、その1 2013-‐‑‒05-‐‑‒18nginx⼊入⾨門 30 MIMEタイプの定義集を読み込む。 レスポンスのデフォルトのMIMEタイプ。 デフォルトはtext/plain アクセスログの書式の定義。 アクセスログの出⼒力力先パスと書式名。 デフォルトの書式名は"combined"(apacheでよく使われるログの書式)
31.
sendfile on; tcp_nopush on; keepalive_timeout
5; gzip on; gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript; include /etc/nginx/conf.d/*.conf; } httpコンテキスト、その2 2013-‐‑‒05-‐‑‒18nginx⼊入⾨門 31 コンテンツのファイルの読み込みとクライアント へのレスポンスの送信にsendfile() APIを使うか sendfileが有効なときにTCP_̲NOPUSHソケット オプション(FreeBSD)やTCP_̲CORKソケット オプション(Linux)を使うか。 キープアライブのタイムアウトの秒数。 デフォルトは75。 レスポンスのコンテンツを圧縮するか。 バーチャルホストの設定ファイル読み込み
32.
server { listen 80; server_name
example.jp; root /var/www/html; index index.html index.php; location / { } location /images/ { alias /var/www/images/; } } serverコンテキスト 2013-‐‑‒05-‐‑‒18nginx⼊入⾨門 32 リクエストを受け付けるIPアドレスやポート番号 バーチャルホストの名前 バーチャルホスト(バーチャルサーバ)毎 の設定を記述する。 ドキュメントルート URIパス毎の設定 パスが"/"で終わる場合に表⽰示す るファイル。 locationディレクティブで指定した URIのパスをファイルシステム上 のパスに対応
33.
listenディレクティブ • 記述⽅方法 ▫ listen
IPアドレス:ポート番号 オプション; – IPアドレスのデフォルト値: * – ポート番号のデフォルト値: 80 – 主なオプション – default_̲server – ssl – spdy 2013-‐‑‒05-‐‑‒18nginx⼊入⾨門 33
34.
listenディレクティブ • 記述例例 ▫ インターフェイスすべて –
listen *:80; – listen 80; – listen *; ▫ IPv4 – listen 192.0.2.1:80; – listen 192.0.2.1; ▫ IPv6 – listen [2001:db8:dead:beef::1]:80; 2013-‐‑‒05-‐‑‒18nginx⼊入⾨門 34
35.
listenディレクティブ • 記述例例 ▫ SSL/TLS –
listen 443 ssl; – listen 192.0.2.1:443 ssl; – listen [2001:db8:dead:beef::1]:443 ssl; ▫ SPDY – listen 443 ssl spdy; – listen 192.0.2.1:443 ssl spdy; – listen [2001:db8:dead:beef::1]:443 ssl spdy; ▫ デフォルトサーバ – listen 80 default_server; – listen 443 default_server ssl; 2013-‐‑‒05-‐‑‒18nginx⼊入⾨門 35 デフォルトサーバを指定しない と、最初に⾒見見つかったサーバが デフォルトサーバになる。
36.
server_̲nameディレクティブ • 記述⽅方法 ▫ server_̲name
サーバ名 ...; – デフォルト値: "" – ""はHostヘッダのないリクエストに対応 2013-‐‑‒05-‐‑‒18nginx⼊入⾨門 36
37.
server_̲nameディレクティブ • 記述例例 ▫ server_̲name
example.com; ▫ server_̲name example.com www.example.com; ▫ server_̲name *.example.com; ▫ server_̲name .example.com; ▫ server_̲name ~∼^wwwd+.example.com$; ▫ server_̲name ""; ▫ server_̲name _̲; 2013-‐‑‒05-‐‑‒18nginx⼊入⾨門 37 Hostヘッダなし サーバ名に利利⽤用できない⽂文字なので、 デフォルトサーバにする場合に利利⽤用。 正規表現 部分⼀一致 部分⼀一致
38.
server { listen 192.0.2.1:80; listen
192.0.2.1:443 ssl; server_name example.jp; .... } server { listen 192.0.2.2:80; listen 192.0.2.2:443 ssl; server_name www.example.org; .... } IPベースのバーチャルホストの記述例例 2013-‐‑‒05-‐‑‒18nginx⼊入⾨門 38 設定はSSL/TLSと併⽤用できる。 example.jp www.example.org SSL/TLS対応にするときには、 SNI(Server Name Indication)⾮非対応の ウェブブラウザが残っている限りは IPベースのバーチャルホストにする必要あり。 SNI対応になれば名前ベースでよいのですが。
39.
server { listen 80
default_server; server_name _; .... } server { listen 80; server_name example.jp www.example.jp; .... } server { listen 80; listen 443 ssl; server_name www.example.org; .... } 名前ベースのバーチャルホストの記述例例 2013-‐‑‒05-‐‑‒18nginx⼊入⾨門 39 設定はSSL/TLSと 併⽤用できる。 example.jp www.example.org デフォルトサーバ 名前ベースのバーチャルホスト の場合はデフォルトサーバを明 ⽰示的に設定し、誘導ページやエ ラーページなどを表⽰示させる。 そうしないと、クライアントが 想定外のバーチャルホストの ページに接続してしまうことが 発⽣生する。 $ nginx -V 2>&1 | grep SNI TLS SNI support enabled SSL/TLS対応の複数の バーチャルホストを設定 する場合にはnginxのSNI 対応が必要。
40.
SSL/TLS 2013-‐‑‒05-‐‑‒18nginx⼊入⾨門 40 server { listen 443
ssl spdy; server_name example.jp; ssl_certificate /etc/nginx/cert.pem; ssl_certificate_key /etc/nginx/cert.key; ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers HIGH:!aNULL:!MD5; ssl_prefer_server_ciphers on; ssl_session_cache shared:SSL:10m; ssl_session_timeout 10m; } SSL/TLS対応 サーバ証明書、中間証明書 をこの順に1つのファイルに。 プライベート鍵 サーバ証明書のCNと同じ名前 SSL/TLSプロトコルバージョン (TLSv1.1,TLSv1.2はOpenSSL 1.0.1以降降) 暗号スイート openssl ciphers cipherlist '暗号スイート' -‐‑‒v セッションキャッシュ SPDY対応 (nginx 1.4.0以降降、OpenSSL 1.0.1以降降)
41.
server { listen 80; server_name
example.jp; root /var/www/html; index index.html index.php; location / { } location /images/ { alias /var/www/images/; } } serverコンテキスト(再掲) 2013-‐‑‒05-‐‑‒18nginx⼊入⾨門 41 リクエストを受け付けるIPアドレスやポート番号 バーチャルホストの名前 バーチャルホスト(バーチャルサーバ)毎 の設定を記述する。 ドキュメントルート URIパス毎の設定 パスが"/"で終わる場合に表⽰示す るファイル。 locationディレクティブで指定した URIのパスをファイルシステム上 のパスに対応
42.
location – パス毎の設定 •
記述⽅方法 ▫ location プレフィックス URIのパス { locationコンテキスト } プレフィックス 評価⽅方法 説明 なし 前⽅方⼀一致 ^~∼ 前⽅方⼀一致 評価を確定し、正規表現の評価を⾏行行わない。 = 前⽅方⼀一致 パス名が等しい場合(完全⼀一致)。 評価を確定し、正規表現の評価を⾏行行わない。 ~∼ 正規表現 ⼤大⽂文字・⼩小⽂文字を区別する。 ~∼* 正規表現 ⼤大⽂文字・⼩小⽂文字を区別しない。 2013-‐‑‒05-‐‑‒18nginx⼊入⾨門 42
43.
②正規表現(プレフィックスが"~∼", "~∼*")の評価 locationのURIパスの評価 2013-‐‑‒05-‐‑‒18nginx⼊入⾨門 43 ①前⽅方⼀一致(プレフィックスが"=", "^~∼",
なし)の評価 URIのパスが最⻑⾧長⼀一致するlocationを選定する。 (プレフィックスが"="であるものを優先) 選定したlocationが完全⼀一致でプレフィックスが"="である。 選定したlocationのプレフィックスが"^~∼"である。 正規表現のlocationを設定ファイルの出現順に評価する。 評 価 の 確 定 お よ び 終 了了 ③前⽅方⼀一致の評価で選定されたlocationで評価を確定する。 正規表現に⼀一致する。 yes yes yes no no no
44.
locationのURIパスの評価 2013-‐‑‒05-‐‑‒18nginx⼊入⾨門 44 location / { [location
A] } location /example/ { [location B] } どのlocationが適応される? /example/page.html
45.
locationのURIパスの評価 2013-‐‑‒05-‐‑‒18nginx⼊入⾨門 45 location / { [location
A] } location /example/ { [location B] } どのlocationが適応される? /example/page.html 前⽅方⼀一致の評価で最⻑⾧長⼀一致
46.
locationのURIパスの評価 2013-‐‑‒05-‐‑‒18nginx⼊入⾨門 46 location / { [location
A] } location = / { [location B] } location = /page.html { [location C] } どのlocationが適応される? /
47.
locationのURIパスの評価 2013-‐‑‒05-‐‑‒18nginx⼊入⾨門 47 location / { [location
A] } location = / { [location B] } location = /page.html { [location C] } どのlocationが適応される? / 前⽅方⼀一致の評価で完全⼀一致。 プレフィックス"="により評価 が確定。
48.
locationのURIパスの評価 2013-‐‑‒05-‐‑‒18nginx⼊入⾨門 48 location / { [location
A] } location = / { [location B] } location = /page.html { [location C] } どのlocationが適応される? /page.html
49.
locationのURIパスの評価 2013-‐‑‒05-‐‑‒18nginx⼊入⾨門 49 location / { [location
A] } location = / { [location B] } location = /page.html { [location C] } どのlocationが適応される? /page.html 前⽅方⼀一致の評価で完全⼀一致。 プレフィックス"="により 評価が確定。
50.
locationのURIパスの評価 2013-‐‑‒05-‐‑‒18nginx⼊入⾨門 50 location / { [location
A] } location /example/page.html { [location B] } location ~ ^/example/ { [location C] } どのlocationが適応される? /example/page.html
51.
locationのURIパスの評価 2013-‐‑‒05-‐‑‒18nginx⼊入⾨門 51 location / { [location
A] } location /example/page.html { [location B] } location ~ ^/example/ { [location C] } どのlocationが適応される? /example/page.html 正規表現の評価に⼀一致。 評価が確定。 前⽅方⼀一致の評価で最⻑⾧長⼀一致。 プレフィックスなしのため 評価は確定しない。
52.
locationのURIパスの評価 2013-‐‑‒05-‐‑‒18nginx⼊入⾨門 52 location / { [location
A] } location ^~ /example/page.html { [location B] } location ~ ^/example/ { [location C] } どのlocationが適応される? /example/page.html
53.
locationのURIパスの評価 2013-‐‑‒05-‐‑‒18nginx⼊入⾨門 53 location / { [location
A] } location ^~ /example/page.html { [location B] } location ~ ^/example/ { [location C] } どのlocationが適応される? /example/page.html 前⽅方⼀一致の評価で最⻑⾧長⼀一致。 プレフィックス"^~∼"により 評価が確定。
54.
locationのURIパスの評価 2013-‐‑‒05-‐‑‒18nginx⼊入⾨門 54 location / { [location
A] } location /example/ { [location B] } location ~ .php$ { [location C] } location ~ ^/example/.+.php$ { [location D] } どのlocationが適応される? /example/index.php
55.
locationのURIパスの評価 2013-‐‑‒05-‐‑‒18nginx⼊入⾨門 55 location / { [location
A] } location /example/ { [location B] } location ~ .php$ { [location C] } location ~ ^/example/.+.php$ { [location D] } どのlocationが適応される? /example/index.php 正規表現の評価は出現順。 正規表現の評価に⼀一致。 評価が確定。 前⽅方⼀一致の評価で最⻑⾧長⼀一致。 プレフィックスなしのため 評価は確定しない。
56.
rootとalias 2013-‐‑‒05-‐‑‒18nginx⼊入⾨門 56 root /var/www/html; location ~
^/.+.(?:gif|jpg|png)$ { root /var/www/images; } location /s/ { alias /var/www/s/html/; } location ~ ^/s/(.+.(?:gif|jpg|png)$) { alias /var/www/s/images/$1; } ドキュメントルート locationが正規表現で評価された場 合にグルーピングに⼀一致した⽂文字列列 は後⽅方参照できる。 aliasディレクティブ: locationディレクティブで指定した URIのパスをファイルシステム上の パスに対応 rootディレクティブはlocationコ ンテキストにも記述できる。 locationのパスは"/var/www/ images/画像ファイル"に対応す る。
57.
rootとalias 2013-‐‑‒05-‐‑‒18nginx⼊入⾨門 57 root /var/www/html; location ~
^/.+.(?:gif|jpg|png)$ { root /var/www/images; } location /s/ { alias /var/www/s/html/; } location ~ ^/s/(.+.(?:gif|jpg|png)$) { alias /var/www/s/images/$1; } ① /page.html ② /file.jpg ③ /s/page.html ④ /s/file.jpg ファイルシステム上のパスは?
58.
rootとalias 2013-‐‑‒05-‐‑‒18nginx⼊入⾨門 58 root /var/www/html; location ~
^/.+.(?:gif|jpg|png)$ { root /var/www/images; } location /s/ { alias /var/www/s/html/; } location ~ ^/s/(.+.(?:gif|jpg|png)$) { alias /var/www/s/images/$1; } ① /page.html ② /file.jpg ③ /s/page.html ④ /s/file.jpg ファイルシステム上のパスは? /var/www/html/page.html /var/www/images/file.jpg /var/www/s/html/page.html /var/www/s/images/file.jpg
59.
location /s/ { root
/var/www/html/; } rootとalias 2013-‐‑‒05-‐‑‒18nginx⼊入⾨門 59 location /s/ { alias /var/www/html/s/; } URIのパスがファイルシステムのパ スと⼀一致している場合はrootで書 き直した⽅方がわかりやすい。
60.
アクセス制御、ベーシック認証 2013-‐‑‒05-‐‑‒18nginx⼊入⾨門 60 location ~ ^/admin/
{ satisfy any; allow 127.0.0.1; allow ::1; allow 192.0.2.1; allow 2001:db8:dead:beef::1; deny all; auth_basic on; auth_basic_user_file auth/htpasswd-admin; } location ~ /. { deny all; log_not_found off; access_log off; }
61.
ログ出⼒力力の抑制 2013-‐‑‒05-‐‑‒18nginx⼊入⾨門 61 location ~* .(js|css|png|jpg|jpeg|gif|ico)$
{ log_not_found off; access_log off; } location = /favicon.ico { log_not_found off; access_log off; } location = /robots.txt { log_not_found off; access_log off; }
62.
• 以上の設定パラメータで静的ファイルのウェブ サーバは運⽤用できる。 2013-‐‑‒05-‐‑‒18nginx⼊入⾨門 62
63.
2013-‐‑‒05-‐‑‒18nginx⼊入⾨門 63
64.
Webアプリケーションとの連携 2013-‐‑‒05-‐‑‒18nginx⼊入⾨門 64 Webブラウザ nginx Web アプリケーション サーバ http(s) http(s) FastCGI SCGI uWSGI Webアプリ Webアプリケーションサーバに対する プロキシーサーバとして動作。
65.
機能分担 2013-‐‑‒05-‐‑‒18nginx⼊入⾨門 65 Webブラウザ nginx Web アプリケーション サーバ 動的コンテンツSSL/TLS処理理 静的コンテンツ 静的コンテンツはnginxが返し、 動的コンテンツはWebアプリケーション サーバに対するプロキシーとして処理理する。 nginx側でSSL/TLSのオフロード処理理。
66.
負荷分散 2013-‐‑‒05-‐‑‒18nginx⼊入⾨門 66 Webブラウザ nginx リクエスト分散。 加重ラウンドロビン。 Web アプリケーション サーバ Web アプリケーション サーバ Web アプリケーション サーバ
67.
基本的なパターン 2013-‐‑‒05-‐‑‒18nginx⼊入⾨門 67 location / { try_files
$uri $uri/ @webapp; } location /images/ { root /var/www/html/webapps; } location @webapp { proxy_pass http://127.0.0.1:8080/; } location ~ .cgi$ { proxy_pass http://127.0.0.1:8080/; } 指定したURIパスがあればそれ を返し、なければ最後に記述し たURIに内部リダイレクトする。 動的コンテンツ。 PATH_̲INFO形式と判断し、 バックエンドに渡す。 静的コンテンツ バックエンドURI 動的コンテンツ バックエンドURI 静的コンテンツ 名前付きロケーション。 内部リダイレクト⽤用に使⽤用。
68.
基本的なパターン 2013-‐‑‒05-‐‑‒18nginx⼊入⾨門 68 upstream backend { ip_hash; server
backend1.example.jp:8080 weight=5; server backend2.example.jp:8080; server unix:/var/run/backend.sock; } server { location / { try_files $uri $uri/ @webapp; } location @webapp { proxy_pass backend; } location ~ .cgi$ { proxy_pass backend; } } バックエンドの細かい制御 をしたいときにはupstream の設定を⾏行行う。 名前付きロケーション。 内部リダイレクト⽤用に使⽤用。
69.
proxy 2013-‐‑‒05-‐‑‒18nginx⼊入⾨門 69 location /webapp/ { proxy_pass
http://192.0.2.1:8080/; proxy_set_header Host $host; proxy_set_header X-Forwarded-Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_redirect off; } バックエンドサーバのURI バックエンドサーバに渡す 情報をHTTPのヘッダとして 付与。
70.
FastCGI 2013-‐‑‒05-‐‑‒18nginx⼊入⾨門 70 location ~ .php$
{ fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include /etc/nginx/fastcgi_params; } バックエンドサーバの URIまたはソケット FastCGIサーバに渡す ファイル名 fastcgi_̲paramの共通設定を 記述した設定ファイルの読み 込み。
71.
[uwsgi] master = true workers
= 5 no-orphans = true pidfile = /var/run/uwsgi/uwsgi.pid socket = /var/run/uwsgi/uwsgi.sock chmod-socket = 660 uid = nginx gid = nginx cgi = /mt=/var/www/cgi-bin/mt cgi-allowed-ext = .cgi uWSGI + CGI 2013-‐‑‒05-‐‑‒18nginx⼊入⾨門 71 location ~ .cgi$ { uwsgi_pass unix:/var/run/uwsgi/uwsgi.sock; uwsgi_modifier1 9; include /etc/nginx/uwsgi_params; } バックエンドサーバの URIまたはソケット uwsgiプロトコルのパケットヘッダの modifier1の値。 WSGI: 0、PSGI: 5、CGI: 9 uwsgi_̲paramの共通設定を記 述した設定ファイルの読み込み。 /etc/uwsgi.ini
72.
uWSGI +PSGI 2013-‐‑‒05-‐‑‒18nginx⼊入⾨門 72 location ~
.cgi$ { uwsgi_pass unix:/var/run/uwsgi/uwsgi.sock; uwsgi_modifier1 5; uwsgi_param UWSGI_APPID mt; uwsgi_param UWSGI_SCRIPT mt.psgi; include /etc/nginx/uwsgi_params; } バックエンドサーバの URIまたはソケット uwsgiプロトコルのパケットヘッダの modifier1の値。 WSGI: 0、PSGI: 5、CGI: 9 uwsgi_̲paramの共通設定を記 述した設定ファイルの読み込み。 [uwsgi] 中略略 psgi chdir = /var/www/cgi-bin/mt mount = mt=mt.psgi /etc/uwsgi.ini uWSGIに渡すパラメータ
73.
2013-‐‑‒05-‐‑‒18nginx⼊入⾨門 73
Download