Nginx編譯安裝方式
阿新 • • 發佈:2021-08-14
1、安裝依賴包
1)、pcre (Perl Compatible Regular Expressions)
用來支援正則表示式。Nginx的
下載地址:
安裝方式:
$ 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
安裝方式:
$ 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
下載地址:
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