nginx基本概念介紹
阿新 • • 發佈:2019-01-04
1、nginx主要為優化效能,是一種反向代理服、負載均衡務器。有報告表明能支援高達 50,000 個併發連線數。
反向代理伺服器:
Nginx 最常的用途是提供反向代理服務,那麼什麼反向代理呢?正向代理相信很多大陸同胞都在這片神奇的土地上用過了,原理大致如下圖:
代理伺服器作為客戶端這邊的中介接受請求,隱藏掉真實的客戶,向伺服器獲取資源。如果代理伺服器在長城外的話還能順便幫助我們實現翻越長城的目的。而反向代理顧名思義就是反過來代理伺服器作為伺服器的中介,隱藏掉真實提供服務的伺服器,原理大致如下圖:
這麼做當然不是為了實現翻越長城,而是為了實現安全和負載均衡等一系列的功能。所謂安全指客戶端的請求不會直接落到內網的伺服器上而是通過代理做了 一層轉發,在這一層就可以實現安全過濾,流控,防 DDOS 等一系列策略。而負載均衡指我們可以水平擴充套件後端真正提供服務的伺服器數量,代理按規則轉發請求到各個伺服器,使得各個伺服器的負載接近均衡。
2、支援熱部署:
Nginx支援熱部署。它的啟動特別容易, 並且幾乎可以做到7*24不間斷執行,即使執行數個月也不需要重新啟動。你還能夠在不間斷服務的情況下,對軟體版本進行進行升級。
3、nginx有最基本的三個功能(當然還有其他的)
nginx最主要的就是nginx的conf配置檔案。nginx的conf配置檔案是分模組的,有http模組、mail模組等。其中,專案最常用的是http模組。
在http模組中,需要配置的有主要如下幾個引數,下面首先對配置引數做一個總的說明,然後,根據nginx的最主要三個功能來講解配置:
引數說明:
下面是linux下的nginx預設的conf配置檔案(刪除了註釋)
http {
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
include /etc/nginx/mime.types;
default_type application/octet-stream;
access_log /var/log/nginx/access.log; //裝發成功的日誌檔案
error_log /var/log/nginx/error.log; //轉發失敗的日誌檔案
gzip on;
gzip_disable "msie6";
include /etc/nginx/conf.d/*.conf; //新增配置檔案,在新增的配置檔案中有相關配置
include /etc/nginx/sites-enabled/*; //新增配置檔案,在新增的配置檔案中有相關配置
}
斜體字配置可以暫時不用管;
(1)請求頁面(類似於tomcat)
server {
server_name localhost; //可以理解為請求的域名
listen 80 default_server; //請求的埠
listen [::]:80 default_server ipv6only=on;
root /usr/share/nginx/html; //請求的路徑
index index.html index.htm; //請求的路徑下的檔案
location / {
try_files $uri $uri/ =404; //tryfiles 意思是 nginx 會按照接下來的順序去訪問檔案,將第一個匹配的返回。比如你去請求 localhost/test,他會去尋找 /test 檔案,找不到再去找 /test/ 再找不到就返回一個 404。
}
}
(2)反向代理(轉發器)
location / {
proxy_pass 123.34.56.67:8080;
}
這樣所有的請求就都被反向代理到 123.34.56.67 去了。這樣我們反向代理的功能是實現了
(3)提供負載均衡(在反向代理的基礎上)
upstream backend {
ip_hash;
server backend1.example.com;
server backend2.example.com;
server backend3.example.com;
server backend4.example.com;
}
location / {
proxy_pass http://backend;
}
我們在 upstream 中指定了一組機器,並將這個組命名為 backend,這樣在 proxypass 中只要將請求轉移到 backend 這個 upstream 中我們就實現了在四臺機器的反向代理加負載均衡。其中的 iphash 指明瞭我們均衡的方式是按照使用者的 ip 地址進行分配。
注:要讓配置生效,我們不必重啟 nginx 只需要 reload 配置即可。
sudo service nginx reload
啟動命令:
sudo service nginx start
本文參考文章:
代理伺服器作為客戶端這邊的中介接受請求,隱藏掉真實的客戶,向伺服器獲取資源。如果代理伺服器在長城外的話還能順便幫助我們實現翻越長城的目的。而反向代理顧名思義就是反過來代理伺服器作為伺服器的中介,隱藏掉真實提供服務的伺服器,原理大致如下圖:
這麼做當然不是為了實現翻越長城,而是為了實現安全和負載均衡等一系列的功能。所謂安全指客戶端的請求不會直接落到內網的伺服器上而是通過代理做了 一層轉發,在這一層就可以實現安全過濾,流控,防 DDOS 等一系列策略。而負載均衡指我們可以水平擴充套件後端真正提供服務的伺服器數量,代理按規則轉發請求到各個伺服器,使得各個伺服器的負載接近均衡。