反向代理:
有一羣服務器集羣,並且服務器集羣中的每臺服務器內容一樣時,我們要直接從個人電腦訪問到服務器集羣服務器的時候無法訪問,必須通過第三方服務器才能訪問集羣。通過第三方服務器知道要訪問哪一臺服務器提供的內容,此時的代理方式稱爲反向代理。
負載均衡
在訪問服務器集羣的時候 ,用戶的訪問會先訪問一箇中間服務器,再讓這個中間服務器在服務器集羣中選擇一個壓力較小的服務器,將該訪問請求引入選擇的服務器。(nginx會給你分配服務器壓力小的去訪問)
nginx反向代理與負載均衡的實現
用戶訪問網站的時候首先會訪問nginx服務器,然後nginx服務器在從服務器集羣中選擇壓力較小的服務器,將該訪問請求引向該服務器。
反向代理的配置: proxy_pass
項目的開發機地址填寫到proxy_pass後
server{
listen 80;
location / {
proxy_pass http://12.12.12.12:123456
}
}
介紹三個指令:
- ip_hash指令:如果第一次訪問該服務器後被記錄,之後的訪問都是該服務器
- server指令
- upstream指令及相關變量
// 修改nginx.conf
worker_processes 1;//工作進程數,和cpu核數相同
events {
worker_connections 1024;//每個進程允許的最大連接數
}
http { //負載均衡模塊
upstream firstdemo { //服務器
ip_hash;
server 39.106.145.33;
server 47.93.6.93;
}
server { //實現反向代理
listen 8080; //監聽端口
location / { //訪問根路徑
proxy_pass http://firstdemo;//代理到firstdemo的兩個服務器上
}
}
}
一般我們會設置一個server_name,用指定域名的方式去訪問
server {
listen 80;
server_name test.weiqiujuan.com ;
auth_basic off;
location / {
proxy_pass http://10.10.10.10:20186;
proxy_set_header Host $host;
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_connect_timeout 60;
proxy_read_timeout 600;
proxy_send_timeout 600;
}
}
這樣開發,產品,設計均可以通過域名“test.weiqiujuan.com”來訪問開發環境,進行各類走查。
nginx常用命令:
- 查看版本號:nginx -v
- 啓動nginx: nginx
- 關閉nginx: nginx -s stop,停止nginx服務
- 修改配置之後,重啓nginx: nginx -s reload
- 檢查配置是否正確: nginx -t(ok或者successful表示成功)