對於NGINX的研究,我的學習目標就是使用他的三大功能:
1.靜態web服務器
2.反向代理
3.負載均衡
操作系統
本次記錄過程是基於如下操作系統進行操作演示,執行指令lsb_release -a
root@instance-fqhtxc7e:~# lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 18.04.1 LTS
Release: 18.04
Codename: bionic
備註:
因爲這邊直接使用root
賬號進行指令操作,所以並未使用sudo
,非root
用戶需在指令前添加sudo
遠程工具
SecureCRT 7.3
依賴庫
由於以下的操作記錄是基於
Ubuntu
環境下采用源碼編譯方式進行安裝的NGINX
服務,所以在該操作系統下必須擁有編譯源碼的能力,那麼就需要一些必備的編譯所需工具
gcc/g++
gcc
和g++
分別是GNU基於linux系統下c 和 c++ 的程序編譯器
,其中
版本查看方式分別如下
gcc -v
g++ -v
安裝方式分別如下
apt-get install gcc
apt-get install g++
PCRE
PCRE
是perl
語言兼容正則表達式,是一個用C語言編寫的正則表達式函數庫,Nginx編譯需要PCRE(Perl Compatible Regular Expression),因爲Nginx的Rewrite模塊和HTTP核心模塊會使用到PCRE正則表達式語法。這裏需要安裝兩個安裝包pcre
和pcre-devel
。
第一個安裝包提供編譯版本的庫
第二個提供開發階段的頭文件和編譯項目的源代碼,
如果不安裝這些,那麼在編譯NGINX時就會拋出缺少PCRE library
的異常
安裝方式如下
apt-get install libpcre3 libpcre3-dev
zlib
zlib
是一個壓縮庫,類似於zip。我們在linux下看到的*.gz
文件,就是用zlib壓縮的.
這裏需要用到這個主要是因爲接下來的NGINX安裝是由我去官網下載的一個gz壓縮包,所以需要用這個進行解壓,而且在Nginx的各種模塊中同樣也需要使用gzip壓縮。如同安裝PCRE一樣,同樣需要安裝庫和它的源代碼:zlib
和zlib-devel
安裝方式如下
apt-get install zlib1g zlib1g-dev
openssl
libssl-dev
是OpenSSL通用庫,openssl
是一個安全套接字層密碼庫,囊括主要的密碼算法、常用密鑰、證書封裝管理功能及實現SSL協議(Secure Sockets Layer-安全套接層協議)
在Nginx中,如果服務器提供安全網頁時則會用到OpenSSL庫,所以需要安裝庫和它的源代碼:openssl
和openssl-devel
查看當前是否已經安裝方式如下
openssl version -a
root@instance-8scsy8qh:~# openssl version -a
OpenSSL 1.1.1 11 Sep 2018
built on: Tue Nov 12 16:58:35 2019 UTC
platform: debian-amd64
options: bn(64,64) rc4(16x,int) des(int) blowfish(ptr)
compiler: gcc -fPIC -pthread -m64 -Wa,--noexecstack -Wall -Wa,--noexecstack -g -O2 -fdebug-prefix-map=/build/openssl-kxN_24/openssl-1.1.1=. -fstack-protector-strong -Wformat -Werror=format-security -DOPENSSL_USE_NODELETE -DL_ENDIAN -DOPENSSL_PIC -DOPENSSL_CPUID_OBJ -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DKECCAK1600_ASM -DRC4_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DX25519_ASM -DPADLOCK_ASM -DPOLY1305_ASM -DNDEBUG -Wdate-time -D_FORTIFY_SOURCE=2
OPENSSLDIR: "/usr/lib/ssl"
ENGINESDIR: "/usr/lib/x86_64-linux-gnu/engines-1.1"
Seeding source: os-specific
以上信息說明已經安裝
安裝方式如下
apt-get install openssl
apt-get install libssl-dev
NGINX常用操作
進入到NGINX的sbin目錄下,如/usr/local/nginx/sbin
查看NGINX進程ps -ef|grep nginx
啓動nginx./nginx
驗證nginx配置文件是否正確./nginx -t
下圖信息表是成功
重載配置文件./nginx -s reload
或者kill -HUP 進程ID
NGINX源碼編譯
源碼下載
源碼官網下載地址
指令下載方式wget http://nginx.org/download/nginx-1.15.8.tar.gz
源碼解壓
tar -zxvf nginx-1.15.8.tar.gz
編譯前的配置
進入解壓出來的nginx-1.15.8
目錄,執行如下指令
./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module
指令說明如下
指定安裝路徑--prefix=/usr/local/nginx
配置模塊--with-http_stub_status_module、-with-http_ssl_module
(配置https使用時用到,如果不加上這些參數的話,啓動https時會提示找不到ssl模塊)
編譯NGINX
配置好上述編譯前的配置
配置後,在解壓出來的nginx-1.15.8
目錄執行make
說明:make是用來編譯的,它從Makefile中讀取指令,然後編譯
安裝NGINX
編譯好NGINX之後,在相同目錄下執行make install
(即nginx-1.15.8
目錄),即可安裝到配置NGINX時指定的目錄中
說明:make install是用來安裝的,它也從Makefile中讀取指令,安裝到指定的位置
參考資料:https://blog.csdn.net/u013564742/article/details/81746335
NGINX配置
配置文件路徑/usr/local/nginx/conf
配置文件nginx.conf
反向代理
http {
在http塊中進行配置
}
1.http
塊中配置upstream
upstream myapi{
server ip1:port1;
server ip2:port2;
}
2.http
塊中的server
下配置location
location /api{
#要轉發的地址
proxy_pass http://myapi/api;
#添加header避免swagger-ui出現no response from server的錯誤
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}