1. 程式人生 > 其它 >Nginx編譯安裝方式

Nginx編譯安裝方式

1、安裝依賴包

1)、pcre (Perl Compatible Regular Expressions)

用來支援正則表示式。Nginx的 Core and Rewrite 兩個模組使用。

下載地址:

http://www.pcre.org/

安裝方式:

$ wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.44.tar.gz # 具體版本可以視具體要求可定
$ tar -zxf pcre-8.44.tar.gz
$ cd pcre-8.44
$ ./configure
$ make
$ sudo make install

2)、zilb

支援頭(header)壓縮。Nginx

Gzip 模組使用。

下載地址:

http://zlib.net/

安裝方式:

$ wget http://zlib.net/zlib-1.2.11.tar.gz
$ tar -zxf zlib-1.2.11.tar.gz
$ cd zlib-1.2.11
$ ./configure
$ make
$ sudo make install

3)、OPENSSL

支援HTTPS協議。Nginx SSL 和其他模組需要。

下載地址:

https://www.openssl.org/source/

安裝方式:

$ wget http://www.openssl.org/source/openssl-1.1.1g.tar.gz
$ tar -zxf openssl-1.1.1g.tar.gz
$ cd openssl-1.1.1g
$ ./Configure darwin64-x86_64-cc --prefix=/usr
$ make
$ sudo make install

2、下載Nginx原始碼包

具體要使用的版本,也是視具體需求來定。

$ wget https://nginx.org/download/nginx-1.19.0.tar.gz
$ tar zxf nginx-1.19.0.tar.gz
$ cd nginx-1.19.0

3、編譯安裝

1)、編譯示例

$ ./configure
--prefix=/usr/local/nginx
--sbin-path=/usr/local/nginx/nginx
--conf-path=/usr/local/nginx/nginx.conf
--pid-path=/usr/local/nginx/nginx.pid
--with-pcre=../pcre-8.44
--with-zlib=../zlib-1.2.11
--with-http_ssl_module
--with-stream
--with-mail=dynamic
--add-module=/usr/build/nginx-rtmp-module
--add-dynamic-module=/usr/build/3party_module
引數描述
--prefix=<PATH> Nginx檔案目錄,預設:/usr/local/nginx
--sbin-path=<PATH> Nginx可執行檔案,預設:**/sbin/nginx
--conf-path=<PATH> Nginx配置檔案,可以在nginx命令列中,使用-c <FILENAME>指定執行。預設:**conf/nginx.conf
--pid-path=<PATH> Nginx Pid檔案,預設:**/logs/nginx.pid
--error-log-path=<PATH> Nginx錯誤日誌檔案,預設:**/logs/error.log
--http-log-path=<PATH> Nginx HTTP請求日誌檔案:**/logs/access.log
--user=<NAME> Nginx工作程序使用的非許可權使用者名稱稱,預設:nobody
--group=<NAME> Nginx工作程序使用的使用者組,預設:--user引數指定
--with-pcre=<PATH> PCRE庫路徑
--with-pcre-jit 支援PCRE庫的“just-in-time compilation”
--with-zlib=<PATH> ZLIB庫路徑

2)、增加/刪除nginx模組

# 增加新模組
--without-<MODULE-NAME>

# 刪除模組
--without-<MODULE-NAME>
模組名稱描述
http_access_module 接收或者禁止指定客戶端IP地址
http_auth_basic_module 支援使用者名稱和密碼的HTTP基礎認證協議
http_autoindex_module 處理以前斜槓字元(/)結尾的請求,並生成目錄列表
http_browser_module 建立變數,其值依賴於User-Agent請求頭的值
http_charset_module 將指定的字符集新增到Content-Type響應頭。 可以將資料從一個字符集轉換為另一個字符集。
http_empty_gif_module 發出一個單畫素透明GIF
http_fastcgi_module 通過請求給FastCGI伺服器
http_geo_module 建立變數,其值依賴於客戶端IP地址的值
http_gzip_module 使用gzip壓縮,減少傳輸資料大小
http_limit_conn_module 限制每個定義鍵的連線數,特別是來自單個IP地址的連線數
http_limit_req_module 限制每個已定義鍵的請求處理速率,特別是來自單個IP地址的請求處理速率。
http_map_module 建立變數,其值依賴於其他變數的值。
http_memcached_module 通過請求給memcached伺服器
http_proxy_module 通過HTTP請求給其他伺服器
http_referer_module 阻止在Referer報頭中有無效值的請求
http_rewrite_module 使用正則表示式更改請求URI並返回重定向; 有條件地選擇配置。 需要PCRE庫。
http_scgi_module 通過請求給到一個SCGI伺服器
http_ssi_module 在響應中處理SSI (Server Side Includes,伺服器端包含)命令
http_split_clients_module 建立適合A/B測試的變數,也稱為分割測試。
http_upstream_hash_module 啟用Hash負載均衡方法
http_upstream_ip_hash_module 啟用IP Hash負載均衡方法
http_upstream_keepalive_module 啟用keepalive連線
http_upstream_least_conn_module 啟用最小連線負載均衡方法
http_upstream_zone_module 啟用共享記憶體空間模組
http_userid_module 設定適合客戶端識別的cookie
http_uwsgi_module 通過請求給一個uwsgi伺服器
-- with-http_ssl_module 支援HTTPS協議
--with-file-aio 啟用非同步I/O
-- with-http_mp4_module 使能伺服器端支援MP4檔案
-- with-http_v2_module 支援HTTPv2協議
-- with-stream 啟用TCP和UDP代理功能
--with-threads 使能Nginx使用執行緒池

特殊說明:

SCGI:SCGI協議是一個CGI(通用閘道器介面)協議的替代品, 它是一個應用與HTTP伺服器介面標準。

uwsgi:uWSGI是一個Web伺服器,它實現了WSGI協議、uwsgi、http等協議,是一個Web伺服器(如nginx,uWSGI等伺服器)與web應用(如用Flask框架寫的程式)通訊的一種規範。

WSGI / uwsgi / uWSGI 三個概念的區分:

  • WSGI是一種通訊協議。

  • uwsgi是一種線路協議而不是通訊協議,在此常用於在uWSGI伺服器與其他網路伺服器的資料通訊。

  • 而uWSGI是實現了uwsgi和WSGI兩種協議的Web伺服器。

3)、動態新增第三方庫

$  ./configure ... --add-dynamic-module=<PATH>

*.so會寫入到 prefix/modules/ 目錄中

成功新增完動態庫後,需要將.so檔案新增到Nginx配置檔案中

load_module modules/ngx_mail_module.so;

4、安裝Nginx

$ make
$ sudo make install

5、檢查Nginx配置檔案語法

$ sudo nginx -t prefix/conf/nginx.conf

6、啟動Nginx

$ sudo nginx