文章目錄
- 1.為什么使用Nginx
- 2.正向代理與反向代理的區別
- 2.1 正向代理
- 2.2 反向代理
- 3.Nginx的配置使用
- 4.Nginx有什么作用
- 4.1 反向代理
- 4.2 負載均衡
- 4.3 HTTP服務器(動靜分離)
1.為什么使用Nginx
首先,我們知道,為了系統的高可用,我們的系統一般會部署多個實體,即如下圖所示,專案部署于多個服務器上,
- 但是,這樣是存在問題的,我們應該要對用戶屏蔽掉這一資訊,因為我們是不可能安排好每個用戶在特定時刻去訪問特定的服務器,這明顯是行不通的,首先,用戶無法記住這么多的服務器地址,其次,系統管理者難以管理運營,
以百度為例,百度的后臺肯定是不止一臺服務器的,但我們在訪問百度的時候,只需要輸入百度的地址,就會被分配到一個服務器上去,以獲得服務,
而我們訪問的是哪個服務器我們并不知道,我們只管訪問www.baidu.com,后面的事都會有相應的機制幫我們實作,

- 要實作此類效果,即無論應用有多少實體,我們只需要訪問一個地址就可以得到服務,就需要在客戶端與服務端之間加上一層服務器,
- 客戶端只管訪問這一中介服務器(中介服務器的地址是確定的),再由中介服務器將請求代理到真正部署有實體的服務器上去即可,
2.正向代理與反向代理的區別
2.1 正向代理
正向代理就是代理客戶端,
- 其實我們平時是接觸到了很多正向代理的,正向代理就是我們在沒有權限訪問某些服務器或者速率很慢時,通過代理服務器代表我們去訪問,而代理服務器常常是有能力、有權限達到目的的,
下面進行舉例:
- 我們在校外、公司外,是訪問不到學校、公司的內網的,但是我們想要訪問內網資源時,會用到VPN,而一般內網會存在一個VPN服務器,我們使用VPN其實就是讓內網的VPN服務器代替我們去進行訪問(VPN服務器位于內網是可以訪問內網資源的),這其實就是一種正向代理,通過內網VPN服務器代理客戶端進行請求,
- 我們在玩一些服務器部署在國外的游戲時(如:吃雞),延遲會很長,此時,我們會“翻墻”,以此來提升速率,其實,這種方式與上一例是一樣的邏輯,同樣是讓延遲低的服務器代理我們去訪問,以提升速率,

2.2 反向代理
反向代理就是代理服務端,
- 而反向代理的應用場景則就是對上述的多實體的情況的處理,使用一臺代理服務器(下圖中的深色服務器)對底層的應用服務器(下圖中的淺色服務器)進行代理,將他們的地址資訊對客戶端屏蔽,客戶端只需要訪問代理服務器即可,代理服務器會將請求轉發給底層的正真起作用的應用服務器,但在客戶端眼里,服務器只有唯一的一臺,就是代理服務器,

3.Nginx的配置使用
首先,需要安裝Nginx,此處博主就不進行講解了,大家可以去查閱相關教程,
博主使用的是Linux,Windows的路徑存在差異,請大家進行變更
- 首先,要使用Nginx,就需要進行配置,于是,我們進入其組態檔
vim /etc/nginx/nginx.conf
- 如下就是博主的組態檔的內容:
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;
#gzip on;
include /etc/nginx/conf.d/*.conf;
upstream myserver {
server 192.168.240.110:8080 max_fails=3 fail_timeout=30s weight=1;
server 192.168.240.111:8080 max_fails=3 fail_timeout=30s weight=1;
}
server {
listen 80;
server_name 192.168.240.240;
location / {
proxy_pass http://myserver;
}
}
}
- 大家最應該關注的應該就是下圖所示的內容:

下面進行講解:
1.首先,對于upstream,里面配置的是應用服務器的資訊,其中包括了應用服務器的地址,
2.而max_fails是設定Nginx與服務器通信的嘗試失敗的次數,在fail_timeout引數定義的時間段內,如果失敗的次數達到此值,Nginx就認為服務器不可用,在下一個fail_timeout時間段,服務器不會再被嘗試使用,等待下一個周期(同樣時常為fail_timeout)再一次去請求,判斷是否連接是否成功,
3.weight值表示權重,權重越大,被分配到請求的可能性也越大,
1.server中則是對代理服務器進行配置,listen是其監聽的埠號,而HTTP的默認埠號就是80,所以,當監聽埠號為80的時候,就不需要在請求路徑中加上埠號,
2.而后則是代理服務器的地址,以及接受請求的路徑(“/”則表示根路徑),
3.proxy_pass表示將請求代理到后面的“http://myserver”代表的路徑
4.Nginx有什么作用
4.1 反向代理
- 即本文所講述的功能,Nginx可以作為應用服務器的代理服務器,
4.2 負載均衡
- 實則在上述的組態檔中也有所體現,即所配置的權重,權重會影響請求被分發到該服務器的概率,權重越大,被分發請求的概率越大,
4.3 HTTP服務器(動靜分離)
- 我們的專案中是存在很多靜態資源的,它們不會因專案運行而發送變化,所以可以快取在Nginx本地,加快訪問速度,
其實還有例如:虛擬主機等功能,但上述功能是最為常用的功能,所以僅對上述功能進行簡單闡述,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/292155.html
標籤:其他
