Nginx使用upstream實現動靜分離

一、為什么要進行動靜分離

分離資源,減少不必要到的請求消耗,減少請求延時。

注:我這里,是nginx處理靜態資源,apache處理動態資源。

場景分析:

1、未分離之前的場景步驟

(1)客戶端請求url到中間件(比如nginx,apache)

(2)中間件根據url請求相應目錄,程序框架

(3)程序框架運行程序邏輯

(4)程序邏輯請求相應數據資源

(5)將數據資源返回給客戶端

注:其實,靜態資源是不需要經過動態請求,直接中間件返回給客戶端就可以了。也就是說只要第1步和第5步就可以了

?

?

配置文件展示:

upstream php_api{#代理請求到本地apache服務器,實現動靜分離(這里我將apache默認端口更改為81)server 127.0.0.1:81;
}
server {listen       80;server_name  www.xiaobudiu.top;access_log  /etc/nginx/logs/access/www.xiabudiu.top.access.log  main;root /data/www;location ~ \.php$ {#如果網站訪問的url后綴是.php,則代理使用apache進行解析proxy_pass http://php_api;index  index.html index.htm;}#如果請求的是靜態資源,則默認使用nginx進行處理location ~ \.(jpg|png|gif)$ {expires 1h;gzip on;}location /{index  index.html index.htm;}# redirect server error pages to the static page /50x.html#error_page   500 502 503 504 404 403  /404.html;location = /404.html {root   /data/errorPage;}location ~ /\.ht {deny  all;}
}

?

? 或者是這樣:

?

?

upstream image {server  192.168.0.3:80;server  192.168.0.4:80;
}upstream php {server  192.168.0.5:80;server  192.168.0.6:80;
}server {listen       80;server_name  www.xiaobudiu.top;access_log  /etc/nginx/logs/access/www.xiabudiu.top.access.log  main;location  /{#如果uri后綴不是.php或是圖片后綴,就走本地服務器進行處理root data/www;index  index.php index.html;}location ~* \.php$ {#如果是.php結尾,反向代理到upstream php組里進行輪詢proxy_pass  http://php;}location ~* "\.(.jpg|png|jpeg|gif)" {#如果是.jpg,.png,.jpeg,.gif結尾,反向代理到upstream image組里進行輪詢proxy_pass http://image;}# redirect server error pages to the static page /404.htmlerror_page   500 502 503 504 404 403  /404.html;location = /404.html {root   /data/errorPage;}location ~ /\.ht {deny  all;}}

注:這是在子配置文件中進行的定義,比如,上面編輯的就是/etc/nginx/conf.d/www.xiaobudiu.top.conf 文件

?

當然,由于nginx對代理有一定要求,所以,在nginx.conf中也要進行一定的定義,比如這樣:

nginx.conf

?

user  nginx;
worker_processes  1;
worker_rlimit_nofile 65536;error_log  /etc/nginx/logs/error/error.log warn;
pid        /var/run/nginx.pid;events {worker_connections  1024;multi_accept on;use epoll;
}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  /etc/nginx/logs/access/access.log  main;sendfile        on;#tcp_nopush     on;keepalive_timeout  65;client_max_body_size 20m;gzip  on;gzip_proxied any;gzip_comp_level 3;gzip_min_length 1k;gzip_buffers 16 32k;gzip_http_version 1.0;gzip_types text/plain text/css application/json application/xml+rss text/javascript image/jpeg image/gif image/png;fastcgi_buffers 256 16k;fastcgi_buffer_size 128k;fastcgi_connect_timeout 3s;fastcgi_send_timeout 120s;fastcgi_read_timeout 120s;reset_timedout_connection on;server_names_hash_bucket_size 100;include /etc/nginx/conf.d/*.conf;}

?

?

?

最后,需要說明的是,上述配置文件只是為了說明反向代理和負載均衡是如何實現的,并沒有結合實際項目。

?

注:nginx 官方proxy模塊文檔?http://nginx.org/en/docs/http/ngx_http_proxy_module.html

注:負載均衡中多態服務器間的數據同步這里采用rsync,當然,還有其他方式。可參考:

https://www.cnblogs.com/miclesvic/p/6189540.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/282319.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/282319.shtml
英文地址,請注明出處:http://en.pswp.cn/news/282319.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

HMAC

HMAC 的用途 HMAC 算法主要應用于身份驗證,用法如下: 1.客戶端發出登錄請求2.服務器返回一個隨機值,在會話記錄中保存這個隨機值3.客戶端將該隨機值作為密鑰,用戶密碼進行 hmac 運算,遞交給服務器4.服務器讀取數據庫中…

JS的原型鏈和繼承

原型和原型鏈 原型prototype,在創建新函數的時候,會自動生成,而prototype中也會有一個constructor,回指創建該prototype的函數對象。 __proto__是對象或者實例中內置的[[prototype]],其指向的是產生該對象的對象的prot…

Android 的滑動分析以及各種實現

一、滑動效果的產生滑動一個View,本質區別就是移動一個View。改變當前View所在的坐標,原理和動畫相似不斷改變坐標位置實現。實現View的滑動就必須監聽滑動的事件,并且根據事件傳入的坐標,動態且不斷改變View的坐標,從…

微軟產品 .NET 6 遷移之旅

“.NET性能不行!”“.NET有什么像樣的產品嗎!?”“升級到.NET 6有什么好處!?”……聽人扯淡還不如看看微軟自己是怎么做的。本文將匯總一下微軟的開發博客——這些博客均涉及微軟將產品和服務遷移到.NET 6的成果。博客…

Navicat 連接 RDS數據庫

場景介紹: 隨著業務量的逐漸增加,公司的數據庫壓力也會逐漸增大,使用自己購買的esc創建的mysql的話,還得考慮相應的dba維護,也比較繁瑣,說不定還做的并不完美,這時,RDS就派上用場了&…

bzoj1045 糖果傳遞

Description 有n個小朋友坐成一圈&#xff0c;每人有ai個糖果。每人只能給左右兩人傳遞糖果。每人每次傳遞一個糖果代價為1。 Input 第一行一個正整數nn<1000000&#xff0c;表示小朋友的個數&#xff0e;接下來n行&#xff0c;每行一個整數ai&#xff0c;表示第i個小朋友得…

BEGINNING SHAREPOINT#174; 2013 DEVELOPMENT 第9章節--client對象模型和REST APIs概覽 client對象模型API范圍...

BEGINNING SHAREPOINT 2013 DEVELOPMENT 第9章節--client對象模型和REST APIs概覽 client對象模型API范圍 本章之前提到過。client對象模型應用中一個不足就是缺乏對SP APIs和訪問功能的支持不足。轉載于:https://www.cnblogs.com/yutingliuyl/p/6748382.html

為.NET應用添加截圖功能

本文介紹了 .NET 實現截圖功能的思路和過程&#xff0c;如果你僅想了解最后的解決方案&#xff0c;可以直接查看文章末尾。截圖的功能我們應該都經常使用&#xff0c;在開發軟件時&#xff0c;我們有時也或多或少需要提供這方面的功能&#xff0c;無論是為用戶更方便提供遠程診…

K8S集群Master高可用實踐

本文將在前文基礎上介紹k8s集群的高可用實踐&#xff0c;一般來講&#xff0c;k8s集群高可用主要包含以下幾個內容&#xff1a;1、etcd集群高可用2、集群dns服務高可用3、kube-apiserver、kube-controller-manager、kube-scheduler等master組件的高可用 其中etcd實現的辦法較為…

[轉載]智能科普:VR、AR、MR的區別

智能科普&#xff1a;VR、AR、MR的區別 http://news.zol.com.cn/553/5534833.html news.zol.com.cn 2015-11-23 16:00近日&#xff0c; 獲得谷歌5億美元融資的技術公司Magic Leap在WSJD展會中放出了一段實錄視頻&#xff0c;引起不小騷動。如今&#xff0c;也有媒體稱他們為MR公…

PHP項目中,記錄錯誤日志

一、場景介紹&#xff1a; 環境&#xff1a;LNMP 我們通常是通過nginx的錯誤日志來分析分錯的&#xff0c;也就是我們在各個server中定義的error_log。 比如下面這樣&#xff0c;就是將錯誤日志定義在/etc/nginx/logs/error/www.xiaobudiu.top.log&#xff0c;發生錯誤&#xf…

持續集成指南:GitLab 的 CI/CD 工具配置與使用

1前言寫代碼這項工作&#xff0c;本質就是將工作自動化&#xff0c;減少手工操作提供效率&#xff0c;因為人的本質都是懶狗&#xff0c;程序員也不能例外&#xff0c;為了各種意義的效率提升&#xff08;懶&#xff09;&#xff0c;我們需要持續集成工具&#xff0c;將代碼測試…

php 錯誤日志 redis' already loaded in Unknown on line 0

環境介紹&#xff1a;LNMP 報錯信息&#xff1a;注&#xff1a;這個php_errors.log 是我在php.ini 中定義的錯誤日志路徑 問題原因&#xff1a; 報錯信息給出的意思是&#xff1a;redis和memcache 模塊已經加載過問題解決&#xff1a; php加載模塊有兩種方式&#xff0c;一種是…

第一周作業

我的Git賬號&#xff1a;AI1452349541 和代碼圖 這是我在電腦和手機上下的網易有道詞典 &#xff0c; C也下了。 ***學習內容總結*** 感覺任務并不是很難&#xff0c;有些任務沒完成是 因為還沒買電腦不好弄&#xff0c;下周電腦一定到位。 ***遇到的問題…

升級MariaDB為10.1版本

2019獨角獸企業重金招聘Python工程師標準>>> CentOS中升級mariadb為10.1GA版本。 1、如果有&#xff0c;停止服務 systemctl stop mariadb 2、卸載原來的數據庫服務 yum -y remove mari* 3、刪除數據庫文件 rm -rf /var/lib/mysql/* 4.創建/etc/yum.repos.d/MariaDB…

第一篇文章

第一次寫博客。歡迎各位大牛捧場轉載于:https://www.cnblogs.com/clnchanpin/p/6753665.html

羊了個羊的Ignite大會又來啦

據說最近羊了個羊非常火啊&#xff5e;可惜沒有時間精力研究。不過&#xff0c;薅微軟羊毛的機會我是一定不會錯過的&#xff0c;這不&#xff0c;薅羊毛的機會來了&#xff0c;哈哈哈。作為經常薅微軟羊毛的老司機&#xff0c;今天收到了微軟的郵件&#xff0c;告知有新的羊毛…

清除谷歌瀏覽器的dns緩存

谷歌地址欄輸入&#xff1a; chrome://net-internals/#dns出現下面界面&#xff1a;找到DNS選項&#xff0c;選擇clear host cache即可效果&#xff1a;這樣&#xff0c;谷歌瀏覽器上的dns緩存就清理掉了。應用場景&#xff1a; 本地環境和線上環境用的是一個host&#xff0c;這…

生產YUM源搭建

企業內部YUM源搭建轉載于:https://www.cnblogs.com/xiangtanglaojing/p/7603581.html

什么樣的代碼稱得上是好代碼?

“軟件自有其美感所在” --《重構》圖片&#xff1a;崇禮瀚海梁的山花 拍攝于2022年8月13日 攝影師&#xff1a;劉先生這篇內容寫作于4年前&#xff08;2018年&#xff09;&#xff0c;是自己多年軟件開發工作的一點感悟&#xff0c;現在看來雖有偏頗&#xff0c;但總體思想方…