摘要:承接上一篇文章,在本文中,將上文中的靜態資源服務器作為上游服務器,另外搭建一臺服務器,作為反向代理服務器。
承接上一篇文章,在本文中,將上文中的靜態資源服務器作為上游服務器,另外搭建一臺 Nginx 服務器,作為反向代理服務器。
配置反向代理服務器上游服務器處理的業務邏輯相對復雜,而且強調開發效率,所以它的性能并不優秀,使用 nginx 作為反向代理后,可以將請求將根據負載均衡算法,分散到多臺上游(后端)服務器,這樣就實現了架構上的水平擴展,讓用戶無感知的情況下,添加更多的服務器,來提升性能,即使后端的服務器出現問題,nginx反向代理服務器會轉交給正常工作的服務器。
一般情況下,上游服務器不對外提供訪問,修改的方法是,將 server 配置塊中的 listen 配置項修改為內部網絡地址,修改配置文件后,重啟nginx 進程,目的是防止之前打開的端口仍然可以使用。
Nginx實現反向代理的功能由 ngx_http_proxy_module 實現,下面是配置示例:
location / { proxy_pass http://localhost:8080; proxy_set_header Host $host; #當后端還有虛擬主機時,應該返回正確的網頁,而不是用戶請求不用的 host 都返回相同的內容 proxy_set_header X-Real-IP $remote_addr; }
當用戶請求"/"的所有 URL請求,都轉交配置文件中proxy_pass指定的后端服務器,同時還設置了向后端生成請求報文時新的 header,如定義Host 將用戶請求的 host 定義在 header 中,定義 X-Real-IP客戶端的 IP 地址。
... upstream webdlib{ #定義上游服務器群組,并自定義名稱為 webdlib server 172.16.240.140:8080; #上游服務器群組的服務器列表,多臺服務器可以選擇負載均衡算法 } server { listen 80 server_name _; ... ... location / { proxy_pass http://172.16.240.140:8080; #設置上游服務器地址 proxy_set_header Host $host; #添加請求首部 host 名稱,由上游服務器處理 host 請求 proxy_set_header X-Real-IP $remote_addr; #添加客戶端真實 IP 地址 proxy_set_header X-Forward-For $proxy_add_x_forwarded_for; }配置緩存服務器
通常只有動態請求,也就是不同的用戶訪問同一個 url內容不相同時,請求才會交由上游處理,在頁面中,一部分內容在一段時間不會發生變化,為了減輕上游服務器的壓力,將上游服務器返回的內容,緩存在反向代理服務器中保存一段時間,如幾個小時或一天,在緩存時間內,即使上游服務器內容發生變化,也會被忽視,將緩存的內容向瀏覽器發送。使用緩存會提供站點的響應性能。
首先要在 http 配置塊下,使用proxy_cache_path定義緩存文件的路徑、文件命名方式、命名共享內存及共享內存的空間大小等信息,如proxy_cache_path /tmp/nginxcache levels=1:2 keys_zone=my_cache:10m max_size=10g inactive=60m use_temp_path=off;
緩存的使用方法則是,在需要進行緩存url 路徑下,添加 proxy_cache、proxy_cache_key、proxy_cache_valid。
proxy_cache my_cache:指定緩存共享內存的命名
proxy_cahce_key $host$uri$is_args$args:在共享內存中設置的 key 的值,這里將 host,uri 等作為 key 值
Proxy_cache_valid 200 304 302 1d :指定的響應不返回緩存
下面是關于緩存的配置文件節選:
... http { ... proxy_cache_path /tmp/nginxcache levels=1:2 keys_zone=my_cache:10m max_size=10g inactive=60m use_temp_path=off; ... server { ... location / { proxy_pass http://172.16.240.140:8080; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forward-For $proxy_add_x_forwarded_for; proxy_cache my_cache; proxy_cache_key $host$uri$is_args$args; proxy_cache_valid 200 304 302 1d; } } }總結
首先配置反向代理服務器,需要使用 proxy_pass設置上游服務地址、使用 proxy_set_header設置向后端發送請求的 header諸如客戶端的 IP 地址、請求的 host。
配置緩存服務器,首先要設置緩存的名稱,內存空間名稱等信息,然后在需要進行緩存的 URL 路徑下,啟用緩存,進行緩存的設置諸如緩存的名稱、緩存的 key 等。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/40382.html
摘要:承接上一篇文章,在本文中,將上文中的靜態資源服務器作為上游服務器,另外搭建一臺服務器,作為反向代理服務器。 承接上一篇文章,在本文中,將上文中的靜態資源服務器作為上游服務器,另外搭建一臺 Nginx 服務器,作為反向代理服務器。 配置反向代理服務器 上游服務器處理的業務邏輯相對復雜,而且強調開發效率,所以它的性能并不優秀,使用 nginx 作為反向代理后,可以將請求將根據負載均衡算法,...
摘要:我覺得結合的反向代理,緩存和圖像過濾處理三大模塊來為我托管在上的圖片來創建一個縮略圖服務器會很優雅。后者將作為的反向代理,產生并提供調整大小后的圖像。它返回有效的響應,緩存服務器將緩存該響應天,其它任何東西都只緩存秒。 一兩個月前,我決定從我的站點中移除Varnish ,并用Nginx內置的緩存系統替代它。我本來已經在我的python站點上用了nginx來反向代理,所以擺脫Varnis...
摘要:我覺得結合的反向代理,緩存和圖像過濾處理三大模塊來為我托管在上的圖片來創建一個縮略圖服務器會很優雅。后者將作為的反向代理,產生并提供調整大小后的圖像。它返回有效的響應,緩存服務器將緩存該響應天,其它任何東西都只緩存秒。 一兩個月前,我決定從我的站點中移除Varnish ,并用Nginx內置的緩存系統替代它。我本來已經在我的python站點上用了nginx來反向代理,所以擺脫Varnis...
閱讀 2384·2023-04-26 02:54
閱讀 2307·2021-10-14 09:43
閱讀 3341·2021-09-22 15:19
閱讀 2837·2019-08-30 15:44
閱讀 2697·2019-08-30 12:54
閱讀 980·2019-08-29 18:43
閱讀 1932·2019-08-29 17:12
閱讀 1325·2019-08-29 16:40