Nginx安裝部署及代理配置
一、Nginx
1、是什麼
Nginx是一款基於c語言的高效能的http伺服器/反向代理伺服器及電子郵件(IMAP/POP3)代理伺服器。由俄羅斯的程式設計師Igor Sysoev開發,官方測試Nginx能夠支撐5萬併發連結,並且cpu、記憶體等資源消耗非常低,執行非常穩定。
2、應用場景
(1)http伺服器。Nginx可以獨立提供http服務,可以做網頁靜態伺服器。
(2)虛擬主機。可以實現在一臺伺服器虛擬出多個網站,例如個人網站使用的虛擬主機。
(3)反向代理,負載均衡。當網站的訪問量達到一定程度,單臺伺服器不能滿足使用者的請求時,需要用多臺伺服器建立叢集,這時可以使用Nginx做反向代理。多臺伺服器可以平均分擔負載,不會因為某臺伺服器負載高宕機而某臺伺服器閒置的情況。
二、安裝
1、安裝Nginx依賴包
(1)yum install gcc-c++
安裝Nginx需要先將官網下載的原始碼進行編譯,編譯依賴gcc環境。
(2)yum install -y pcre pcre-devel
PCRE(Perl Compatible Regular Expressions)是一個Perl庫,包括perl相容的正則表示式庫。Nginx的http模組使用pcre來解析正則表示式。
(3)yum install -y zlib zlib-devel
zlib庫提供了很多種壓縮和解壓縮的方式,Nginx使用zlib對http包的內容進行gzip。
(4)yum install -y openssl openssl-devel
OpenSSL是一個強大的安全套接字層密碼庫,囊括主要的密碼演算法、常用的金鑰和證書封裝管理功能及SSL協議,並提供豐富的應用程式供測試或其它目的使用。Nginx不僅支援http協議,還支援https(在ssl協議上傳輸http),所以需要安裝openssl庫。
2、安裝JDK
3、安裝Nginx
(1)下載並解壓nginx-1.14.0.tar。
(2)進行configure:
./configure \ --prefix=/home/nginx \ --pid-path=/var/run/nginx/nginx.pid \ --lock-path=/var/lock/nginx.lock \ --error-log-path=/var/log/nginx/error.log \ --http-log-path=/var/log/nginx/access.log \ --with-http_gzip_static_module \ --http-client-body-temp-path=/var/temp/nginx/client \ --http-proxy-temp-path=/var/temp/nginx/proxy \ --http-fastcgi-temp-path=/var/temp/nginx/fastcgi \ --http-uwsgi-temp-path=/var/temp/nginx/uwsgi \ --http-scgi-temp-path=/var/temp/nginx/scgi
注意:臨時檔案目錄指定為/var/temp/nginx,需要在/var下建立temp及nginx目錄
(3)執行make
(4)執行make install
4、啟停
(1)啟動:
sbin目錄下:./nginx。如果訪問不到,首先檢視防火牆是否關閉。
(2)、關閉:
./nginx -s stop
(3)、重新整理配置:
./nginx -s reload
三、訪問配置
1、通過埠區分虛擬機器
在nginx.conf中新增一個server節點,修改埠號即可:
2、通過域名區分虛擬機器
(1)修改hosts檔案指定域名的ip地址(hosts檔案的位置:C:\Windows\System32\drivers\etc):
(2)配置基於域名的虛擬主機:
server {
listen 80;
server_name www.wind.com;
location / {
root html-test;
index index.html index.htm;
}
}
修改配置後需要重新載入配置檔案。
四、反向代理
使用一臺虛擬機器,安裝一個nginx,多個Tomcat,來模擬。
upstream tomcats{
server 127.0.0.1:8080 weight=1;
server 127.0.0.1:8081 weight=2;
ip_hash;
}
//負載均衡:weight代表權重,權重越高,分配請求的數量就越多,預設是1,
ip_hash規定同一主機請求對映到同一伺服器。
server {
listen 80;
server_name www.wind.com;
location / {
proxy_pass http://tomcats;
index index.html index.htm;
}
}