您好,登錄后才能下訂單哦!
本篇內容介紹了“Nginx中的主要應用場景是什么”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
nginx是一個http的web服務器,可以將服務器上的靜態文件(html、css、圖片)通過HTTP協議返回給瀏覽器客戶端。
舉例:我們在服務器上部署一個靜態資源index.html
將index.html上傳至linux /opt/www/test
修改nginx.conf 增加一個location,攔截/test的請求,root 對應的/opt/www路徑代表根路徑,也就是/test前面的/斜杠
location /test { root /opt/www; index index.html; }
啟動nginx或者重新加載nginx
我們訪問下:http://192.168.253.130/test/
負載均衡可以分為硬件負載均衡和軟件負載均衡
硬件負載均衡,比如F5、深信服、Array等,優點是有廠商專業團隊支持,性能穩定;缺點是價格昂貴
軟件負載均衡,比如Nginx、LVS、HAProxy等,優點是免費開源,成本低廉
輪詢法:將請求按順序輪流地分配到后端服務器上,它均衡地對待后端的每一臺服務器,而不關心服務器實際的連接數和當前的系統負載。
http { upstream test{ ##后端實際服務器 nginx在輪詢訪問以下幾臺服務器 server 10.100.30.1:8080; server 10.100.30.2:8080; server 10.100.30.3:8080; server 10.100.30.4:8080; } server { ##前端攔截入口 listen 80; server_name www.test.com; location / { proxy_pass http://test; } } }
加權輪詢法:不同的后端服務器可能機器的配置和當前系統的負載并不相同,因此它們的抗壓能力也不相同。
給配置高、負載低的機器配置更高的權重,讓其處理更多的請;而配置低、負載高的機器,給其分配較低的權重,降低其系統負載,加權輪詢能很好地處理這一問題,并將請求順序且按照權重分配到后端。
http { upstream test{ ##后端實際服務器 nginx在輪詢訪問以下幾臺服務器 server 10.100.30.1:8080 weight=1; server 10.100.30.2:8080 weight=3; server 10.100.30.3:8080 weight=1; server 10.100.30.4:8080 weight=1; } server { ##前端攔截入口 listen 80; server_name www.test.com; location / { proxy_pass http://test; } } }
源地址哈希法:根據獲取客戶端的IP地址,通過哈希函數計算得到一個數值,用該數值對服務器列表的大小進行取模運算,得到的結果便是客服端要訪問服務器的序號。
采用源地址哈希法進行負載均衡,同一IP地址的客戶端,當后端服務器列表不變時,它每次都會映射到同一臺后端服務器進行訪問。
upstream test{ ip_hash; server 10.100.30.1:8080 weight=1; server 10.100.30.2:8080 weight=3; server 10.100.30.3:8080 weight=1; server 10.100.30.4:8080 weight=1; }
最小連接數法:由于后端服務器的配置不盡相同,對于請求的處理有快有慢,最小連接數法根據后端服務器當前的連接情況,動態地選取其中當前積壓連接數最少的一臺服務器來處理當前的請求,盡可能地提高后端服務的利用效率,將負責合理地分流到每一臺服務器。
upstream test{ least_conn; server 10.100.30.1:8080; server 10.100.30.2:8080; server 10.100.30.3:8080; server 10.100.30.4:8080; }
down:表示停掉某臺服務
upstream test{ server 10.100.30.1:8080 down; server 10.100.30.2:8080; server 10.100.30.3:8080; server 10.100.30.4:8080; }
backup:指定備用服務器,正常情況下只要有其他服務器能正常訪問,備用服務器不會被訪問到,只有其他服務器都掛掉的時候,才會使用備用服務器,所以采用這種方式一般用來實現熱部署,先把代碼更新到備用服務器上,然后停掉正常服務器,正常服務器部署完成后,備用服務器又處于等待狀態,整個部署過程使用戶能夠感受不到停機。
upstream test{ server 10.100.30.1:8080 backup; server 10.100.30.2:8080 backup; server 10.100.30.3:8080; server 10.100.30.4:8080; }
靜態代理
動靜分離
虛擬主機
Nginx是一款高性能、高并發的HTTP服務器和反向代理服務器,可用于靜態資源服務器、負載均衡器、反向代理、緩存服務器、Web服務器等多種場景。
下面列舉幾個使用場景和示例:
在使用Nginx作為靜態資源服務器時,Nginx會直接返回請求的文件,從而減輕Web服務器的負擔。這種場景通常用于提供靜態文件下載或者視頻等大文件的訪問。
下面是一個示例Nginx配置:
server { listen 80; server_name example.com; location / { root /usr/share/nginx/html; index index.html index.htm; } location /images/ { alias /var/www/images/; } location /downloads/ { alias /var/www/downloads/; } }
上述配置中,Nginx會將訪問根目錄(/)的請求映射到/usr/share/nginx/html目錄下,如果請求的是/images/目錄下的文件,Nginx則會映射到/var/www/images/目錄下,如果請求的是/downloads/目錄下的文件,Nginx則會映射到/var/www/downloads/目錄下。
在使用Nginx作為反向代理服務器時,Nginx會將請求轉發給Web服務器進行處理,然后將處理結果返回給客戶端。
這種場景通常用于實現負載均衡、提高Web服務器的安全性、隱藏Web服務器的真實IP等。
下面是一個示例Nginx配置:
upstream backend { server backend1.example.com:8080 weight=3; server backend2.example.com:8080; } server { listen 80; server_name example.com; location / { proxy_pass http://backend; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } }
上述配置中,Nginx會將訪問根目錄(/)的請求轉發給后端的Web服務器(backend1.example.com和backend2.example.com),其中backend1.example.com的權重為3,backend2.example.com的權重為1,表示backend1.example.com的處理能力更強。
在轉發請求時,Nginx還會設置HTTP頭信息中的Host和X-Real-IP字段,從而隱藏Web服務器的真實IP。
在使用Nginx作為負載均衡器時,Nginx會將請求均衡地分發到多個Web服務器上,從而實現高并發、高可用的服務。這種場景通常用于Web應用程序的集群部署、分布式系統的部署等。下面是一個示例Nginx配置:
upstream backend { server backend1.example.com:8080; server backend2.example.com:8080; server backend3.example.com:8080; } server { listen 80; server_name example.com; location / { proxy_pass http://backend; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } }
上述配置中,Nginx會將請求均衡地分發到三個Web服務器(backend1.example.com、backend2.example.com和backend3.example.com)上,從而實現負載均衡。
在轉發請求時,Nginx還會設置HTTP頭信息中的Host和X-Real-IP字段,從而隱藏Web服務器的真實IP。
在使用Nginx作為緩存服務器時,Nginx會緩存Web服務器返回的響應,從而減少對Web服務器的請求。這種場景通常用于提高Web應用程序的性能、降低Web服務器的負載等。下面是一個示例Nginx配置:
proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m inactive=60m; server { listen 80; server_name example.com; location / { proxy_cache my_cache; proxy_pass http://backend; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } }
上述配置中,Nginx會將Web服務器返回的響應緩存到/var/cache/nginx/my_cache目錄下,并設置緩存有效期為60分鐘。在緩存命中時,Nginx會直接返回緩存的響應,從而減少對Web服務器的請求。
總之,Nginx具有很強的可擴展性和靈活性,可以根據不同的需求配置不同的使用場景。以上僅是一些示例,實際應用中還有很多其他的使用場景。
在使用Nginx作為反向代理服務器時,Nginx會將客戶端請求轉發到后端的Web服務器上,并將后端服務器返回的響應轉發給客戶端。這種場景通常用于隱藏后端服務器的真實IP、提高Web應用程序的可用性等。下面是一個示例Nginx配置:
server { listen 80; server_name example.com; location / { proxy_pass http://backend; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } }
上述配置中,Nginx會將客戶端請求轉發到http://backend上,并設置HTTP頭信息中的Host和X-Real-IP字段,從而隱藏后端服務器的真實IP。
在使用Nginx作為WebSocket服務器時,Nginx會將客戶端請求轉發到后端的WebSocket服務器上,并實現WebSocket協議的連接管理。這種場景通常用于實時通信、游戲等應用程序。
下面是一個示例Nginx配置:
map $http_upgrade $connection_upgrade { default upgrade; '' close; } server { listen 80; server_name example.com; location / { proxy_pass http://backend; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection $connection_upgrade; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } }
上述配置中,Nginx會將WebSocket請求轉發到http://backend上,并設置HTTP頭信息中的Upgrade、Connection、Host和X-Real-IP字段,從而實現WebSocket協議的連接管理。
總之,Nginx具有很多的使用場景,可以根據不同的需求配置不同的服務器功能。以上僅是一些示例,實際應用中還有很多其他的使用場景。
“Nginx中的主要應用場景是什么”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。