ソースからnginxを構築する
構築は configure
コマンドを使って設定されます。configureはnginxが接続の処理時に使うことができるメソッドを含めたシステムのあらゆる特徴を定義します。最後にMakefile
を作ります。
configure
コマンドは次のパラメータをサポートしています:
-
--help
- ヘルプメッセージを表示する。
-
--prefix=
path
-
ファイルを提供するディレクトリを定義します。これと同じディレクトリが
configure
(ライブラリのソースファイルへのパスは除く) とnginx.conf
設定ファイルの中で全ての相対パスにも使われます。デフォルトでは/usr/local/nginx
に設定されます。 -
--sbin-path=
path
-
nginx実行ファイルの名前を設定します。この名前はインストールの間でのみ使われます。デフォルトではファイルは
という名前です。prefix
/sbin/nginx -
--modules-path=
path
-
nginx動的モジュールがインストールされるディレクトリを定義します。デフォルトでは、
ディレクトリが使われます。prefix
/modules -
--conf-path=
path
-
nginx.conf
設定ファイルの名前を設定します。必要があれば、nginxはコマンドラインのパラメータ で設定ファイルを指定して、異なる設定ファイルで常に開始するようにすることもできます。デフォルトでは、ファイルの名前は-c
file
です。prefix
/conf/nginx.conf -
--error-log-path=
path
-
初期のerror, warning, および diagnosticファイルの名前を設定する。インストール後は、
nginx.conf
設定ファイルの中で error_logディレクティブを使っていつでも変更することができます。デフォルトでは
という名前です。prefix
/logs/error.log -
--pid-path=
path
-
メインプロセスのプロセスIDを格納する
nginx.pid
ファイルの名前を設定する。インストール後は、nginx.conf
設定ファイルの中で pidディレクティブを使っていつでも変更することができます。デフォルトでは
という名前です。prefix
/logs/nginx.pid -
--lock-path=
path
-
ロックファイルの名前のプリフィックスを設定します。インストレーションの後で、その値は lock_file ディレクティブを使って
nginx.conf
設定ファイル内で常に変更することができます。デフォルトでは、値は
です。prefix
/logs/nginx.lock
-
--user=
name
-
ワーカープロセスによって使われる特権の無いユーザの名前を設定します。インストレーションの後で、その名前はuserディレクティブを使って
nginx.conf
設定ファイル内で常に変更することができます。デフォルトのユーザ名はnobodyです。 -
--group=
name
-
ワーカープロセスによって使われる特権のないグループの名前を設定します。インストレーションの後で、その名前はuserディレクティブを使って
nginx.conf
設定ファイル内で常に変更することができます。デフォルトでは、権限が無いユーザののグループ名が設定されます。
-
--build=
name
- 任意のnginxビルド名を設定します。
-
--builddir=
path
- ビルドのディレクトリを設定します。
-
--with-select_module
--without-select_module
-
サーバが
select()
メソッドを使うことができるモジュールのビルドを有効あるいは無効にします。プラットフォームがkqueue、epollまたは/dev/poll のようなもっと適切なメソッドをサポートしていないような場合は、このモジュールが自動的に構築されます。 -
--with-poll_module
--without-poll_module
-
サーバが
poll()
メソッドを使うことができるモジュールのビルドを有効あるいは無効にします。プラットフォームがkqueue、epollまたは/dev/poll のようなもっと適切なメソッドをサポートしていないような場合は、このモジュールが自動的に構築されます。 -
--with-threads
- スレッドプールの使用を有効にします。
-
--with-file-aio
- FreeBSDとLinuxにおいて、非同期ファイルI/O (AIO)の利用を有効にします。
-
--with-http_ssl_module
- HTTPSプロトコルのサポートをHTTPサーバに追加するモジュールのビルドを有効にします。このモジュールはデフォルトでは構築されません。このモジュールを構築して実行するにはOpenSSLライブラリが必要です。
-
--with-http_v2_module
- HTTP/2のサポートを提供するモジュールの構築を有効にします。このモジュールはデフォルトでは構築されません。
-
--with-http_realip_module
- クライアントのアドレスを特定のヘッダフィールド内で送信されたアドレスに変更するngx_http_realip_moduleモジュールの構築を有効にします。このモジュールはデフォルトでは構築されません。
-
--with-http_addition_module
- 応答の前後にテキストを追加するngx_http_addition_moduleモジュールの構築を有効にします。このモジュールはデフォルトでは構築されません。
-
--with-http_xslt_module
--with-http_xslt_module=dynamic
- 1つ以上のXSLTスタイルシートを使ってXML応答を変換するngx_http_xslt_moduleの構築を有効にします。このモジュールはデフォルトでは構築されません。このモジュールを構築および実行するには、libxml2 と libxslt ライブラリが必要です。
-
--with-http_image_filter_module
--with-http_image_filter_module=dynamic
- JPEG, GIF, PNG およびWebP形式のイメージを変換するngx_http_image_filter_moduleモジュールの構築を有効にします。このモジュールはデフォルトでは構築されません。
-
--with-http_geoip_module
--with-http_geoip_module=dynamic
- クライアントIPアドレスと事前コンパイルされたMaxMindデータベースに基づく変数を作成するngx_http_geoip_moduleモジュールの構築を有効にします。このモジュールはデフォルトでは構築されません。
-
--with-http_sub_module
- 1つの指定された文字列を他のものに置き換えることで応答を修正するngx_http_sub_moduleモジュールの構築を有効にします。このモジュールはデフォルトでは構築されません。
-
--with-http_dav_module
- WebDAVプロトコルを使ってファイル管理自動化を提供するngx_http_dav_moduleモジュールの構築を有効にします。このモジュールはデフォルトでは構築されません。
-
--with-http_flv_module
- Flash Video (FLV)ファイルの擬似的なストリーミングのサーバサイドサポートを提供するngx_http_flv_moduleモジュールの構築を有効にします。このモジュールはデフォルトでは構築されません。
-
--with-http_mp4_module
- MP4ファイルの擬似的なストリーミングのサーバサイドサポートを提供するngx_http_mp4_module モジュールの構築を有効にします。このモジュールはデフォルトでは構築されません。
-
--with-http_gunzip_module
-
"gzip"符号化メソッドをサポートしないクライアントのために"
Content-Encoding: gzip
"の応答を解凍するngx_http_gunzip_module モジュールの構築を有効にします。このモジュールはデフォルトでは構築されません。 -
--with-http_gzip_static_module
-
通常のファイルの代わりに"
.gz
"ファイル拡張子のあらかじめ圧縮されたファイルを送信することができる<c0>ngx_http_gzip_static_module</c0>モジュールの構築を有効にします。このモジュールはデフォルトでは構築されません。 -
--with-http_auth_request_module
- サブリクエストの結果に基づいたクライアント認証を実装するngx_http_auth_request_moduleモジュールの構築を有効にします。このモジュールはデフォルトでは構築されません。
-
--with-http_random_index_module
-
スラッシュ文字('
/
')で終わるリクエストを処理し、ディレクトリ内のランダムなファイルをindexファイルとして提供するために取り上げるngx_http_random_index_module モジュールの構築を有効にします。このモジュールはデフォルトでは構築されません。 -
--with-http_secure_link_module
- ngx_http_secure_link_module モジュールの構築を有効にします。このモジュールはデフォルトでは構築されません。
-
--with-http_degradation_module
- <a0>ngx_http_degradation_module</a0> モジュールの構築を有効にします。このモジュールはデフォルトでは構築されません。
-
--with-http_slice_module
- ある範囲の応答を返しながら、リクエストをサブリクエストに分割するngx_http_slice_module モジュールの構築を有効にします。モジュールは大きな応答のより効果的なキャッシングを提供します。このモジュールはデフォルトでは構築されません。
-
--with-http_stub_status_module
- 基本統計情報へのアクセスを提供する ngx_http_stub_status_module モジュールの構築を有効にします。このモジュールはデフォルトでは構築されません。
-
--without-http_charset_module
- 応答の"Content-Type"ヘッダフィールドに指定した文字セットを追加し、付加的に1つの文字セットから他のものへの変換をすることができるngx_http_charset_module モジュールの構築を無効にします。
-
--without-http_gzip_module
- HTTPサーバの応答を圧縮するモジュールの構築を無効にします。このモジュールを構築して実行するにはzlibライブラリが必要になります。
-
--without-http_ssi_module
- 応答が通過する時にSSI (Server Side Includes) コマンドを処理する ngx_http_ssi_module モジュールの構築を無効にします。
-
--without-http_userid_module
- クライアント識別に適したクッキーを設定するngx_http_userid_moduleモジュールの構築を無効にします。
-
--without-http_access_module
- 特定のクライアントのアドレスからのアクセスを制限することができるngx_http_access_moduleモジュールの構築を無効にします。
-
--without-http_auth_basic_module
- “HTTP Basic 認証”プロトコルを使ってユーザ名とパスワードを検証してリソースへのアクセスを制限することができるngx_http_auth_basic_moduleモジュールの構築を無効にします。
-
--without-http_mirror_module
- バックグランドのミラー サブリクエストを作成することで、元のリクエストのミラーリングを実装するngx_http_mirror_moduleモジュールの構築を無効にします。
-
--without-http_autoindex_module
-
スラッシュ文字('
/
')で終わるリクエストを処理し、ngx_http_index_moduleモジュールがindexファイルを見つけられない場合にディレクトリのリストを生成するngx_http_autoindex_moduleモジュールの構築を無効にします。 -
--without-http_geo_module
- クライアントIPアドレスに依存する値を持つ変数を作成するngx_http_geo_moduleモジュールの構築を無効にします。
-
--without-http_map_module
- 変数の値が他の変数に依存するような変数を作成するngx_http_map_moduleモジュールの構築を無効にします。
-
--without-http_split_clients_module
- A/Bテストのための変数を生成するngx_http_split_clients_moduleモジュールの構築を無効にします。
-
--without-http_referer_module
- "Referer"ヘッダフィールドに不正な値を持つリクエストのサイトへのアクセスを阻止することができるngx_http_referer_moduleモジュールの構築を無効にします。
-
--without-http_rewrite_module
- HTTPサーバがリクエストをリダイレクトし、リクエストのURIを変更できるようにするモジュールのビルドを無効にします。このモジュールを構築して実行するにはPCREライブラリが必要です。
-
--without-http_proxy_module
- HTTPサーバのプロキシモジュールのビルドを無効にします。
-
--without-http_fastcgi_module
- リクエストをFastCGIサーバに渡すngx_http_fastcgi_moduleモジュールの構築を無効にします。
-
--without-http_uwsgi_module
- リクエストをuwsgiサーバに渡すngx_http_uwsgi_moduleモジュールの構築を無効にします。
-
--without-http_scgi_module
- リクエストをSCGIサーバに渡すngx_http_scgi_moduleモジュールの構築を無効にします。
-
--without-http_grpc_module
- リクエストをgRPCサーバに渡すngx_http_grpc_moduleモジュールの構築を無効にします。
-
--without-http_memcached_module
- memcachedサーバから応答を取得するngx_http_memcached_moduleモジュールの構築を無効にします。
-
--without-http_limit_conn_module
- キーごとの接続数、例えば1つのIPアドレスからの接続数を制限するngx_http_limit_conn_moduleモジュールの構築を無効にします。
-
--without-http_limit_req_module
- キーごとのリクエストの処理レート、例えば1つのIPアドレスから来るリクエストの処理レートを制限するngx_http_limit_req_moduleモジュールの構築を無効にします。
-
--without-http_empty_gif_module
- 1ピクセルの透過GIFを発行するモジュールの構築を無効にします。
-
--without-http_browser_module
- "User-Agent"リクエストヘッダフィールドの値に応じて変数に値を生成するngx_http_browser_moduleモジュールの構築を無効にします。
-
--without-http_upstream_hash_module
- hashロードバランシングメソッドを実装するモジュールの構築を無効にします。
-
--without-http_upstream_ip_hash_module
- ip_hashロードバランシングメソッドを実装するモジュールの構築を無効にします。
-
--without-http_upstream_least_conn_module
- least_connロードバランシングメソッドを実装するモジュールの構築を無効にします。
-
--without-http_upstream_random_module
- randomロードバランシングメソッドを実装するモジュールの構築を無効にします。
-
--without-http_upstream_keepalive_module
- upstreamサーバへの接続のキャッシュを提供するモジュールの構築を無効にします。
-
--without-http_upstream_zone_module
- 共有メモリゾーンのupstreamグループの実行時の状態を格納できるようにするモジュールの構築を無効にします。
-
--with-http_perl_module
--with-http_perl_module=dynamic
- 組み込みのPerlモジュールの構築を有効にします。このモジュールはデフォルトでは構築されません。
-
--with-perl_modules_path=
path
- Perlモジュールを保持するディレクトリを定義します。
-
--with-perl=
path
- Perlバイナリの名前を設定します。
-
--http-log-path=
path
-
HTTPサーバの初期リクエストログの名前を設定する。インストール後は、
nginx.conf
設定ファイルの中でaccess_logディレクティブを使っていつでも変更することができます。デフォルトでは、ファイルの名前は
です。prefix
/logs/access.log -
--http-client-body-temp-path=
path
-
クライアントのリクエストボディを保持するテンポラリファイルを保存するディレクトリを定義します。インストレーションの後で、そのディレクトリはclient_body_temp_pathディレクティブを使って
nginx.conf
設定ファイル内で常に変更することができます。デフォルトでは、ディレクトリの名前は
です。prefix
/client_body_temp -
--http-proxy-temp-path=
path
-
プロキシされたサーバから受け取るデータを保持する一時ファイルのディレクトリを定義します。インストレーションの後で、そのディレクトリはproxy_temp_pathディレクティブを使って
nginx.conf
設定ファイル内で常に変更することができます。デフォルトでは、ディレクトリの名前は
です。prefix
/proxy_temp -
--http-fastcgi-temp-path=
path
-
FastCGIサーバから受け取るデータを保持する一時ファイルのディレクトリを定義します。インストレーションの後で、そのディレクトリはfastcgi_temp_pathディレクティブを使って
nginx.conf
設定ファイル内で常に変更することができます。デフォルトでは、ディレクトリの名前は
です。prefix
/fastcgi_temp -
--http-uwsgi-temp-path=
path
-
uwsgiサーバから受け取るデータを保持する一時ファイルのディレクトリを定義します。インストレーションの後で、そのディレクトリはuwsgi_temp_pathディレクティブを使って
nginx.conf
設定ファイル内で常に変更することができます。デフォルトでは、ディレクトリの名前は
です。prefix
/uwsgi_temp -
--http-scgi-temp-path=
path
-
SCGIサーバから受け取るデータを保持する一時ファイルのディレクトリを定義します。インストレーションの後で、そのディレクトリはscgi_temp_pathディレクティブを使って
nginx.conf
設定ファイル内で常に変更することができます。デフォルトでは、ディレクトリの名前は
です。prefix
/scgi_temp
-
--without-http
- HTTPサーバを無効にします。
-
--without-http-cache
- HTTPキャッシュを無効にします。
-
--with-mail
--with-mail=dynamic
- POP3/IMAP4/SMTP mail proxy サーバを有効にします。
-
--with-mail_ssl_module
- SSL/TLSプロトコルのサポートをメールプロキシサーバに追加するモジュールの構築を有効にします。このモジュールはデフォルトでは構築されません。このモジュールを構築して実行するにはOpenSSLライブラリが必要です。
-
--without-mail_pop3_module
- メールプロキシサーバのPOP3プロトコルを無効にします。
-
--without-mail_imap_module
- メールプロキシサーバのIMAPプロトコルを無効にします。
-
--without-mail_smtp_module
- メールプロキシサーバのSMTPプロトコルを無効にします。
-
--with-stream
--with-stream=dynamic
- 一般的なTCP/UDPプロキシとロードバランシングのためのストリームモジュールの構築を有効にします。このモジュールはデフォルトでは構築されません。
-
--with-stream_ssl_module
- SSL/TLSプロトコルのサポートをストリームモジュールに追加するモジュールの構築を有効にします。このモジュールはデフォルトでは構築されません。このモジュールを構築して実行するにはOpenSSLライブラリが必要です。
-
--with-stream_realip_module
- クライアントのアドレスをPROXYプロトコルヘッダ内で送信されるアドレスに変更するngx_stream_realip_moduleモジュールの構築を有効にします。このモジュールはデフォルトでは構築されません。
-
--with-stream_geoip_module
--with-stream_geoip_module=dynamic
- クライアントIPアドレスと事前コンパイルされたMaxMindデータベースに基づく変数を作成するngx_stream_geoip_moduleモジュールの構築を有効にします。このモジュールはデフォルトでは構築されません。
-
--with-stream_ssl_preread_module
- SSL/TLSを中断せずにClientHelloメッセージから情報を抜き出せるngx_stream_ssl_preread_moduleモジュールの構築を有効にします。このモジュールはデフォルトでは構築されません。
-
--without-stream_limit_conn_module
- キーごとの接続数、例えば1つのIPアドレスからの接続数を制限するngx_stream_limit_conn_moduleモジュールの構築を無効にします。
-
--without-stream_access_module
- 特定のクライアントのアドレスからのアクセスを制限することができるngx_stream_access_moduleモジュールの構築を無効にします。
-
--without-stream_geo_module
- クライアントIPアドレスに依存する値を持つ変数を作成するngx_stream_geo_moduleモジュールの構築を無効にします。
-
--without-stream_map_module
- 変数の値が他の変数に依存するような変数を作成するngx_stream_map_moduleモジュールの構築を無効にします。
-
--without-stream_split_clients_module
- A/Bテストのための変数を生成するngx_stream_split_clients_moduleモジュールの構築を無効にします。
-
--without-stream_return_module
- 特定の値をクライアントに送信し、接続を閉じるngx_stream_return_moduleモジュールの構築を無効にします。
-
--without-stream_set_module
- disables building the ngx_stream_set_module module that sets a value for a variable.
-
--without-stream_upstream_hash_module
- hashロードバランシングメソッドを実装するモジュールの構築を無効にします。
-
--without-stream_upstream_least_conn_module
- least_connロードバランシングメソッドを実装するモジュールの構築を無効にします。
-
--without-stream_upstream_random_module
- randomロードバランシングメソッドを実装するモジュールの構築を無効にします。
-
--without-stream_upstream_zone_module
- 共有メモリゾーンのupstreamグループの実行時の状態を格納できるようにするモジュールの構築を無効にします。
-
--with-google_perftools_module
- Google Performance Toolsを使ってnginxのworkerプロセスのプロファイリングを有効にするngx_google_perftools_moduleモジュールの構築を有効にします。このモジュールはnginx開発者のためのもので、デフォルトでは構築されません。
-
--with-cpp_test_module
-
ngx_cpp_test_module
モジュールの構築を有効にします。
-
--add-module=
path
- 外部モジュールを有効にします。
-
--add-dynamic-module=
path
- 外部動的モジュールを有効にします。
-
--with-compat
- 動的モジュールの互換性を有効にします。
-
--with-cc=
path
- Cコンパイラの名前を設定します。
-
--with-cpp=
path
- Cプリプロセッサの名前を設定します。
-
--with-cc-opt=
parameters
-
CFLAGS変数に追加される、追加のパラメータを設定します。FreeBSDにおいてシステムのPCREライブラリを使う場合は、
--with-cc-opt="-I /usr/local/include"
が指定されるべきです。select()
によってサポートされる数を増加する必要がある場合は、ここでこのように指定する事ができます:--with-cc-opt="-D FD_SETSIZE=2048"
-
--with-ld-opt=
parameters
-
linkの間に使われる追加のパラメータを設定します。FreeBSDにおいてシステムのPCREライブラリを使う場合は、
--with-ld-opt="-L /usr/local/lib"
が指定されるべきです。 -
--with-cpu-opt=
cpu
-
指定されたCPUごとの構築を有効にします:
pentium
,pentiumpro
,pentium3
,pentium4
,athlon
,opteron
,sparc32
,sparc64
,ppc64
。
-
--without-pcre
- PCREライブラリの使用を無効にします。
-
--with-pcre
- PCREライブラリの使用を強制します。
-
--with-pcre=
path
-
PCREライブラリのソースへのパスを設定します。ライブラリの配布物はPCREサイトからダウンロードして解凍する必要があります。後は、nginxの
./configure
とmake
で完了です。このライブラリはlocationディレクティブの中でサポートされる正規表現とngx_http_rewrite_moduleモジュールのために必要です。 -
--with-pcre-opt=
parameters
- PCREの追加の構築オプションを設定します。
-
--with-pcre-jit
- “just-in-time コンパイル”サポート(1.1.12、pcre_jitディレクティブ)のPCREライブラリを構築します。
-
--without-pcre2
- disables use of the PCRE2 library instead of the original PCRE library (1.21.5).
-
--with-zlib=
path
-
zlibライブラリのソースへのパスを設定します。ライブラリの配布物(バージョン 1.1.3 - 1.2.11) をzlibサイトからダウンロードして解凍する必要があります。後は、nginxの
./configure
とmake
で完了です。このライブラリはngx_http_gzip_moduleモジュールのために必要です。 -
--with-zlib-opt=
parameters
- zlibの追加の構築オプションを設定します。
-
--with-zlib-asm=
cpu
-
指定されたCPUに最適化されたzlibアセンブラソースの使用を有効にします:
pentium
,pentiumpro
。
-
--with-libatomic
- libatomic_ops ライブラリの使用を強制します。
-
--with-libatomic=
path
- libatomic_opsライブラリソースへのパスを設定します。
-
--with-openssl=
path
- OpenSSLライブラリソースへのパスを設定します。
-
--with-openssl-opt=
parameters
- OpenSSLの追加の構築オプションを設定します。
-
--with-debug
- デバッグログを有効にします。
パラメータの使い方の例(これらは全て一行で記述される必要があります):
設定 --sbin-path=/usr/local/nginx/nginx --conf-path=/usr/local/nginx/nginx.conf --pid-path=/usr/local/nginx/nginx.pid --with-http_ssl_module --with-pcre=../pcre2-10.39 --with-zlib=../zlib-1.2.11
設定の後で、nginxはmake
を使ってコンパイルされインストールされます。