1. 通用配置項
--prefix=<path>
:Nginx 安裝的根路徑,所有其他的路徑都要依賴於該選項。--sbin-path=<path>
:指定 Nginx 二進制文件的路徑。如果沒有指定,那么這個路徑會依賴於 --prefix 選項。--conf-path=<path>
:如果在命令行沒有指定配置文件,那么將會通過這里指定路徑,Nginx 將會去那里查找它的配置文件。--error-log-path=<path>
:指定錯誤文件的路徑,Nginx 將會往其中寫入錯誤日志文件,除非有其他的配置。--pid-path=<path>
:指定的文件將會寫入 Nginx master 進程的 pid,通常在 /var/run 下。--lock-path=<path>
:共享存儲器互斥鎖文件的路徑。--user=<user>
:worker 進程運行的用戶。--group=<group>
:worker 進程運行的組。--with-file-aio
:為 FreeBSD 4.3+ 和 Linux 2.6.22+ 系統啟用異步 I/O。--with-debug
:這個選項用於啟用調試日志。在生產環境的系統中不推薦使用該選項。
2. 優化編譯
--with-cc=<path>
:如果想設置一個不在默認 PATH 下的 C 編譯器。--with-cpp=<path>
:設置 C 預處理器的相應路徑.--with-cc-opt=<options>
: 指定必要的 include 文件路徑,可能 d(-I<path)指出,也可能是優化(-O4)和指定一個 64 位構建。--with-ld-opt=<options>
:包含連接器庫的路徑(-L)和運行路徑(-R )。 --with-cpu-opt=<cpu>
:通過該選項為特定的 CPU 構建 Nginx。
3. mail 配置選項
--with-mail
:該選項用於啟用 mail 模塊,該模塊默認沒有激活。--with-mail_ssl_module
:為了代理任何一種類型的使用 SSL/TLS 的 mail,激活該模塊。--without-mail_pop3_module
:在啟用 mail 模塊后,單獨地禁用 POP3 模塊。--without-mail_imap_module
:在啟用 mail 模塊后,單獨地禁用 IMAP 模塊。--without-mail_smtp_module
:在啟用 mail 模塊后,單獨地禁用 SMTP 模塊。--without-http
:該選項將完全禁用 http 模塊,如果你只想支持 mail,那么可以使用它。
對於典型的 mail 代理,可配置為如下:
./configure -with-mail --with-mail_ssl_module --with-openssl=${BUILD_DIR}/openssl-1.0.1c
對於郵件服務器來說,現在幾乎每一個郵件服務器的安裝都需要安裝 SSL/TLS,並沒沒有一個郵件代理啟用了預期功能的用戶。推薦靜態編譯 OpenSSL,以便對操作系統中的 OpenSSL 庫沒有依賴性。
4. http 配置選項
--without-http-cache
:在使用 upstream 模塊時,Nginx 能夠配置本地緩存內容。這個選項能夠禁用緩存。--with-http_perl_module
:Nginx 配置能夠擴展使用 Perl 代碼。這個選項啟用這個模塊(然而使用這個模塊會降低性能)。--with-perl_modules_path=<path>
:對於額外嵌入的 Perl 模塊,使用該選項指定該 Perl 解析器的路徑。也可以通過配置選項來指定 Perl 模塊解析器的位置。--with-perl=<path>
:如果在默認的路徑中沒有找到 Perl,那么指定 Perl(5.6 版本以上)的路徑。--http-client-body-temp-path=<path>
:從客戶端收到請求后,該選項設置的目錄用於作為請求體臨時存放的目錄。如果 WebDAV 模塊啟用,那么推薦設置該路徑為同一個文件系統上的目錄作為最終的目的地。--http-proxy-temp-path=<path>
:在使用代理后,通過該選項設置存放臨時文件路徑。--http-fastcgi-temp-path=<path>
:設置 FastCGI 臨時文件的目錄。--http-uwsgi-temp-path=<path>
:設置 uWSGI 臨時文件的目錄。--http-scgi-temp-path=<path>
:設置 SCGI 臨時文件的目錄。--with-http_ssl_module
:如果需要對流量進行加密,那么可以使用這個選項,在 URLs 中開始部分將會是 https(需要 OpenSSL)。--with-http_realip_module
:如果你的 Nginx 在七層負載均衡器或者是其他設備之后,它們將 Http 頭中的客戶端 IP 地址傳遞,那么你將會需要啟用這個模塊。在多個客戶處於一個 IP 地址下使用。--with-http_addition_module
:這個模塊作為一個輸出過濾器,使你能夠在請求經過一個 location 前或者后時在該 location 本身添加內容。--with-http_xslt_module
:該模塊用於 XML 響應轉換,基於一個或者多個 XSLT 格式(需要 libxml2 和 libxslt 庫)。--with-http_image_filter_module
:該模塊被作為圖像過濾器使用,在將圖像投遞到客戶之前進行處理(需要 libgd 庫)。--with-http_geoip_module
:使用該模塊,能夠設置各種變量以便在配置文件中的區段使用,基於地理位置查找客戶端 IP 地址(需要 MaxMfind GeoIP 庫和相應的預編譯數據庫文件)。--with-http_sub_module
:該模塊實現了替代過濾,在響應中用一個字符串替代另一個字符串。--with-http_dav_module
:啟用這個模塊將激活使用 WebDAV 的配置指令。請注意,這個模塊也只在有需要使用的基礎上啟用,如果配置不正確,它可能帶來安全問題。--with-http_flv_module
:如果需要提供 Flash 流媒體視頻文件,那么該模塊將會提供偽流媒體。--with-http_mp4_module
:這個模塊支持 H.264/AAC 文件偽流媒體。--with-http_gzip_static_module
:當被調用的資源沒有 .gz 結尾格式的文件時,如果想支持發送預壓縮版本的靜態文件,那么使用該模塊。--with-http_gunzip_module
:對於不支持 gzip 編碼的客戶,該模塊用於為客戶解壓縮預壓縮內容。--with-http_random_index_module
:如果你想提供從一個目錄中隨機選擇文件的索引文件,那么這個模塊需要被激活。--with-http_secure_link_module
:該模塊提供了一種機制,它會將一個哈希值鏈接到一個 URL 中,因此,只有那些使用正確的密碼能夠計算鏈接。--with-http_stub_status_module
:啟用這個模塊后會收集 Nginx 自身的狀態信息。輸出的狀態信息可以使用 RRDtool 或類似的東西來繪制成圖。
對於網絡加速/代理,可如下配置:
./configure --with-http_ssl_module --with-http_realip_module --with-http_geoip_module --with-http_stub_status_module --with-openssl=${BUILD_DIR}/openssl-1.0.1c
對於 Web 服務器:
./configure --with-http_stub_status_module
這兩個配置不同之處在於它們面對的客戶,處於 Web 加速時,會考慮到 SSL 請求的終結,也包括處理代理客戶和基於客戶來源決策。處於 Web 服務時,則僅需要提供默認文件訪問能力。
5. 禁用的配置選項
--without-http_charset_module
:該字符集模塊負責設置 Content-Type 響應頭,以及從一個字符集轉換到另一個字符集。--without-http_gzip_module
:gzip 模塊作為一個輸出過濾器,在將內容投遞到客戶時對內容進行壓縮。--without-http_ssi_module
:該模塊是一個過濾器,用於處理 SSI 包含。如果啟用 Perl 模塊,那么額外的 SSI 指令(perl)可用。--without-http_userid_module
:userid 模塊能夠使得 Nginx 設置 cookies,用於客戶標識。變量 $uid_set 和 $uid_got 可以記錄用戶跟蹤。--without-http_access_module
:access 模塊基於 IP 控制訪問 location。--without-http_auth-basic_module
:該模塊通過 Http 基本身份驗證限制訪問。--without-http_autoindex_module
:如果一個目錄中沒有 index 文件,那么 autoindex 模塊收集這個目錄列出文件。--without-http_geo_module
:該模塊能夠讓你基於客戶端 IP 地址設置配置變量,然后根據這些變量的值采取行動。--without-http_map_module
:map 模塊能夠讓你映射一個變量到另一個變量。--without-http_split_clients_module
:該模塊創建用於 A/B 測試的變量。--without-http_referer_module
:該模塊能夠讓 Nginx 阻止基於 Referer Http 頭的請求。--without-http_rewrite_module
:通過 rewrite 模塊能夠讓你基於變量條件改變 URI。--without-http_proxy_module
:使用 proxy 模塊允許 Nginx 將請求傳遞到其他服務器或者服務器組。--without-http_fastcgi_module
:FastCGI 模塊能夠讓 Nginx 將請求傳遞到 FastCGI 服務器。--without-http_uwsgi_module
:這個模塊能夠使得 Nginx 將請求傳遞到 uWSGI 服務器。--without-http_scgi_module
:SCGI 模塊能夠讓 Nginx 將請求傳遞到 SCGI 服務器。--without-http_memcached_module
:該模塊能夠使得 Nginx 與一個 memcached 服務器進行交互,將響應放置到變量查詢中。--without-http_limit_conn_module
:該模塊能夠使得 Nginx 基於某些鍵,通常是 IP 地址,設置連接限制。--without-http_limit_req_module
:通過該模塊,Nginx 能夠限制每個用戶的請求率。--without-http_empty_gif_module
:在內存中產生一個 1 像素 * 1 像素的透明 GIF 圖像。--without-http_browser_module
:browser 模塊允許基於 User-Agent Http 請求頭配置,變量的設置基於在該頭中發現的版本。--without-http_upstream_ip_hash_module
:該模塊定義了一組可以與不同的代理模塊結合使用的服務器。