まずは,nginx について。
nginx(エンジンエックス,と読むらしい)は,ロシアの人が開発したアプリケーションで,ウェブサーバー用のアプリケーションである。 他には apache が有名である。 違いは,apache がプロセス駆動なのに対して,nginx はイベンド駆動であり,多くのアクセスがある場合には nginx の方が圧倒的に有利らしい。 (詳しいことはわかってないので,ネットで調べてみてください)。うちのサーバーはそんなにアクセスがあるわけじゃないので,別に apache のままでもいいのだが,せっかくだから nginx を入れてみた,という次第。
nginx のドキュメントなど
・http://nginx.org/:公式サイト・http://nginx.org/en/docs/:公式サイトの Document ページ
・NGINX wiki:サードパーティー製モジュールの説明はこちら
・Full Example Configuration:設定ファイルの(完全な?)例
・NGINX wiki (日本語):上記 wiki の日本語訳
・NGINX wiki (開始ページ):上記 wiki 日本語訳の「開始ページ」(何故かトップページのリンクからは飛べない…)
・nginxの最近のブログ記事:インフラエンジニアway:私にはわかりやすかった。
FreeBSD での nginx
FreeBSD なので,ports からインストールしてみた。 FreeBSD の ports には nginx 関連は,・/usr/ports/www/nginx ・/usr/ports/www/nginx-full ・/usr/ports/www/nginx-devel ・/usr/ports/www/nginx-lite ・/usr/ports/www/nginx-naxsiがある。
まずはどれをインストールすればよいか,を調べないといけなかった。 ネットで検索すると,Linux を使ってる人たちが多く記載しているが,そこでは,
・nginx-light("basic version"),
・nginx-naxsi("version with naxsi"),
・nginx-core("core version"),
・nginx-full("standard version"),
・nginx-extras("extended version")
があると書いてあることが多い。 それらの違いは,組み込むモジュールの違いらしい。
nginx のモジュール
nginx は,いろんな機能が追加されているが,それらはモジュールとして組み込まないといけない。 モジュールには,静的モジュールと動的モジュールがあり,静的モジュールはインストール時に組み込まなくてはいけないが,動的モジュールは起動時に設定で読み込ませればよい。 新しいモジュールは動的なものが多いように思うが,これまたちゃんとは理解しきれていない。インストールはシンプルな nginx
このモジュールをセットにしたのが,上記のいくつかある「version」である。 今回は,CGI を使いたいとか,Digest 認証を使いたい,Let's Encrypt で https を使いたい,などから,一番たくさんモジュールを組み込んでいる「nginx-extras」がいいなぁ,と思った。 しかし,FreeBSD の ports を見ると,この「extra」がない…。 仕方ないので,Makefile の OPTION を見てみた。 すると,nginx (/usr/ports/www/nginx/) の方が nginx-full よりも OPTION が多いことがわかった。 そこで,今回は一番シンプルな「nginx (/usr/ports/www/nginx/)」をインストールしてみた。一番シンプルな「nginx (/usr/ports/www/nginx/)」だが,これはインストール時に「make config」で組み込むモジュールを指定する。 この config のオプションがとても多い。 よくわからないものがほとんどだったが,とりあえず,UPLOAD_PROGRESS とか ZIP とか,適当に入れておいた。 そういえば FCGI は選択肢になかったから,当然のように組み込まれるのかもしれない…。 他にも AUTH_DIGEST と SSL 関係のものは全部入れてインストールしておいた。 また CT (cert transparency) やら http2,ENCRYPTSESSION なども必要そうに思えたので入れておいた。 あとは STREAM 関係とか,UPSTREAM 関係とか…。使うかどうかわからないけど,MAIL_SSL なんても入れてみた。 ま,どうしてもなら「make config」してインストールし直せばいいし…。
今回1個だけうまく働かないものがあった。それは「HTTP_VIDEO_THUMBEXTRACTOR」ってやつ。これまた,いまいちよくわかってないのに「video」ってついてるから組み込んでみた。 しかし,これがあると nginx がうまく起動できなかった。理由は不明である。なので,これをなしにしてインストールし直している。
指定したモジュールは,静的モジュールは nginx に組み込まれ,動的モジュールは「/usr/local/libexec/nginx/」に置かれ(FreeBSD の場合),使いたい時には設定ファイルで読み込ませればよい。
以下にインストール後のメッセージを載せておこう。 ports の cleaning の結果を見ると,依存関係でいくつかのアプリが同時にインストールされているのがわかる。
=================================================================== Recent version of the NGINX introduces dynamic modules support. In FreeBSD ports tree this feature was enabled by default with the DSO knob. Several vendor's and third-party modules have been converted to dynamic modules. Unset the DSO knob builds an NGINX without dynamic modules support. To load a module at runtime, include the new `load_module' directive in the main context, specifying the path to the shared object file for the module, enclosed in quotation marks. When you reload the configuration or restart NGINX, the module is loaded in. It is possible to specify a path relative to the source directory, or a full path, please see https://www.nginx.com/blog/dynamic-modules-nginx-1-9-11/ and http://nginx.org/en/docs/ngx_core_module.html#load_module for details. Default path for the NGINX dynamic modules is /usr/local/libexec/nginx. =================================================================== ===> SECURITY REPORT: This port has installed the following files which may act as network servers and may therefore pose a remote security risk to the system. /usr/local/sbin/nginx This port has installed the following startup scripts which may cause these network services to be started at boot time. /usr/local/etc/rc.d/nginx If there are vulnerabilities in these programs there may be a security risk to the system. FreeBSD makes no guarantee about the security of ports included in the Ports Collection. Please type 'make deinstall' to deinstall the port if this is a concern. For more information, and contact details about the security status of this software, see the following webpage: http://nginx.org/ ===> Cleaning for google-perftools-2.7 ===> Cleaning for luajit-2.0.5_2 ===> Cleaning for yajl-2.1.0 ===> Cleaning for mod_security3-3.0.2_1 ===> Cleaning for gcc7-7.3.0_5 ===> Cleaning for mpc-1.1.0_1 ===> Cleaning for nginx-1.14.0_11,2
少し長くなったので,設定は次回にしよう。
FreeBSD で nginx に挑戦してみた(その2)に続く
(おまけ)
以下に,FreeBSD の /usr/ports/www/nginx/Makefile から切り出した OPTION 項目のリストを載せておこう。 これらは「make config」の際に表示される順になっている。
DEBUG DEBUGLOG DSO FILE_AIO IPV6 THREADS WWW ----------- Modules that require MAIL module MAIL MAIL_IMAP MAIL_POP3 MAIL_SMTP MAIL_SSL ----------- Modules that require HTTP module GOOGLE_PERFTOOLS HTTP HTTP_ADDITION HTTP_AUTH_REQ HTTP_CACHE HTTP_DAV HTTP_FLV HTTP_GEOIP HTTP_GUNZIP_FILTER HTTP_GZIP_STATIC HTTP_IMAGE_FILTER HTTP_MP4 HTTP_PERL HTTP_RANDOM_INDEX HTTP_REALIP HTTP_REWRITE HTTP_SECURE_LINK HTTP_SLICE HTTP_SSL HTTP_STATUS HTTP_SUB HTTP_XSLT HTTPV2 STREAM STREAM_SSL STREAM_SSL_PREREAD AJP AWS_AUTH BROTLI CACHE_PURGE CLOJURE CT DEVEL_KIT ARRAYVAR DRIZZLE DYNAMIC_UPSTREAM ECHO ENCRYPTSESSION FASTDFS FORMINPUT GRIDFS HEADERS_MORE HTTP_ACCEPT_LANGUAGE HTTP_AUTH_DIGEST HTTP_AUTH_KRB5 HTTP_AUTH_LDAP HTTP_AUTH_PAM HTTP_DAV_EXT HTTP_EVAL HTTP_FANCYINDEX HTTP_FOOTER HTTP_GEOIP2 HTTP_JSON_STATUS HTTP_MOGILEFS HTTP_MP4_H264 HTTP_NOTICE HTTP_PUSH HTTP_PUSH_STREAM HTTP_REDIS HTTP_RESPONSE HTTP_SUBS_FILTER HTTP_TARANTOOL HTTP_UPLOAD HTTP_UPLOAD_PROGRESS HTTP_UPSTREAM_CHECK HTTP_UPSTREAM_FAIR HTTP_UPSTREAM_STICKY HTTP_VIDEO_THUMBEXTRACTOR HTTP_ZIP ICONV LET LUA MEMC MODSECURITY MODSECURITY3 NAXSI NJS PASSENGER POSTGRES RDS_CSV RDS_JSON REDIS2 RTMP SET_MISC SFLOW SHIBBOLETH SLOWFS_CACHE SMALL_LIGHT SRCACHE VTS XSS ----------- GSSAPI implementation (imply HTTP_AUTH_KRBS) GSSAPI_BASE GSSAPI_HEIMDAL GSSAPI_MIT
0 件のコメント:
コメントを投稿