五十八、【Linux系統nginx服務】nginx代理服務器、nginx優化

Nginx代理技術全景圖

Nginx代理
基礎反向代理
負載均衡
緩存加速
安全防護
高級功能
請求轉發
頭部重寫
連接池
輪詢策略
權重分配
會話保持
靜態緩存
動態緩存
邊緣緩存
WAF規則
速率限制
地理封鎖
WebSocket
SSL卸載
動態路由

代理類型深度對比

特性基礎反向代理負載均衡緩存代理最佳適用場景
核心功能請求轉發流量分配內容緩存緩存代理:高重復請求
性能影響極高負載均衡:高并發系統
配置復雜度★★☆☆☆★★★☆☆★★★★☆基礎代理:簡單轉發
資源消耗高(內存)按需求選擇
典型延遲5-50ms10-100ms1-5ms緩存代理:低延遲需求
企業應用內部服務代理應用集群CDN邊緣節點根據架構層級選擇

負載均衡策略詳解

策略配置指令算法原理適用場景缺點
輪詢默認順序分配默認均衡不考慮服務器狀態
加權輪詢weight=3按權重比例異構服務器靜態配置
IP哈希ip_hash客戶端IP映射會話保持擴展性差
最少連接least_conn選擇連接最少長連接服務計算開銷
響應時間fair (第三方)最快響應優先性能敏感服務需額外模塊

緩存優化技術

緩存類型存儲位置緩存內容失效策略性能影響
客戶端緩存用戶瀏覽器靜態資源Expires頭極高
邊緣緩存CDN節點靜態內容TTL控制
反向代理緩存Nginx服務器動態內容Cache-Control
應用緩存內存(Redis)數據庫查詢LRU算法極高

一、Nginx 代理服務器配置

1. 基礎反向代理

# 創建代理配置
[root@localhost ~]# vi /etc/nginx/conf.d/proxy.conf
server {listen 80;server_name proxy.localhost;location / {proxy_pass http://backend_server;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;}
}# 定義上游服務器
upstream backend_server {server 192.168.1.101:8080;server 192.168.1.102:8080;
}# 重載配置
[root@localhost ~]# nginx -t && systemctl reload nginx

2. 負載均衡策略

# 加權輪詢
upstream backend {server 192.168.1.101 weight=3;  # 處理3倍流量server 192.168.1.102;
}# IP哈希保持會話
upstream backend {ip_hash;server 192.168.1.101;server 192.168.1.102;
}# 最少連接數
upstream backend {least_conn;server 192.168.1.101;server 192.168.1.102;
}

3. 緩存配置

# 代理緩存設置
proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=PROXY_CACHE:10m inactive=60m;server {location / {proxy_cache PROXY_CACHE;proxy_cache_valid 200 302 10m;proxy_cache_valid 404 1m;proxy_cache_min_uses 1;add_header X-Cache-Status $upstream_cache_status;}
}

二、Nginx 性能優化

1. 連接優化

# 編輯主配置文件
[root@localhost ~]# vi /etc/nginx/nginx.conf
events {worker_connections 10240;  # 單worker最大連接數multi_accept on;           # 同時接受多個連接use epoll;                 # Linux高性能事件模型
}http {keepalive_timeout 30s;     # 保持連接超時keepalive_requests 100;    # 單連接最大請求數sendfile on;               # 零拷貝傳輸tcp_nopush on;             # 優化數據包發送tcp_nodelay on;            # 禁用Nagle算法
}

2. 壓縮優化

gzip on;
gzip_min_length 1024;          # 最小壓縮文件大小
gzip_comp_level 6;             # 壓縮級別(1-9)
gzip_types text/plain text/css application/json application/javascript;
gzip_vary on;                  # 根據請求頭啟用壓縮

3. 靜態資源優化

location ~* \.(jpg|png|css|js)$ {expires 30d;               # 客戶端緩存30天access_log off;             # 關閉訪問日志add_header Cache-Control "public";open_file_cache max=1000 inactive=20s;  # 文件描述符緩存
}

4. 內核參數調優

# 編輯sysctl配置
[root@localhost ~]# vi /etc/sysctl.conf
net.core.somaxconn = 65535
net.ipv4.tcp_max_syn_backlog = 65535
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_fin_timeout = 30
fs.file-max = 100000# 應用配置
[root@localhost ~]# sysctl -p

三、高級代理功能

1. WebSocket 代理

location /wsapp/ {proxy_pass http://websocket_backend;proxy_http_version 1.1;proxy_set_header Upgrade $http_upgrade;proxy_set_header Connection "upgrade";proxy_read_timeout 600s;    # 長連接超時
}

2. 動態SSL證書

# 使用Let's Encrypt自動續簽
[root@localhost ~]# certbot --nginx -d domain.com# 配置自動重載
[root@localhost ~]# echo "0 0 * * * certbot renew --quiet" | crontab -

3. 地理位置路由

geo $geo {default default_backend;192.168.1.0/24 lan_backend;
}server {location / {proxy_pass http://$geo;}
}

命令總結表格

演示命令功能描述關鍵參數
proxy_pass http://backend反向代理配置后端服務器地址
upstream backend { ... }定義服務器組server + weight
proxy_cache_path配置代理緩存緩存路徑和參數
worker_connections 10240調整并發連接數最大連接數
gzip on啟用壓縮減少傳輸體積
expires 30d靜態資源緩存客戶端緩存時間
sysctl -p應用內核參數系統級優化
certbot --nginx自動SSL證書免費HTTPS證書

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

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

相關文章

[0CTF 2016]piapiapia

usernamepassword回顯推斷admin123Invalid user name or passwordadmin123Invalid user name or passwordadmin123Invalid user name or passworda123Invalid user name說明username是adminadmin1Invalid password這很奇怪了admin0200?admin11Invalid user name or …

人工智能系列(7)人工神經網絡中的無監督學習

一. 無監督學習簡介神經網絡的一個關鍵屬性是能夠從環境中學習,并在不斷學習的過程中持續改善性能。在無監督學習(又稱自組織學習,self-organized learning)中,網絡無需外部教師提供目標輸出,而是通過對輸入…

250810-OpenWebUI集成Dify應用

A. 最終效果 B. 環境配置 配置并啟動Open-WebUI 隨后瀏覽器訪問:http://localhost:8080 pip install open-webui open-webui serve配置并啟動Pipelines Pipelines默認占用80端口相比于Docker的啟動方式,可以在相同的命令行中,查看pipelines …

day22|學習前端ts語言

抽象類,繼承。不能創造實例class類:屬性聲明,構造器,方法,實例繼承super()override重寫父類繼承的方法聲明提升(hoisting)同一個js作用域內部,編譯階段把函數…

【網絡安全】CTF——[網鼎杯2018]Unfinish-SQL注入-二次注入

目錄 一、前言 二、環境 三、復現 3.1尋找注入點 3.2嘗試盲注 3.3正則限制 3.4腳本注入獲取flag 四、總結 一、前言 前兩天復現了一道CTF題目[網鼎杯 2018]Comment,今天繼續來學習一下SQL二次注入。 二、環境 BUUCTF在線評測 三、…

【langchain】如何給langchain提issue和提pull request?

什么是issue? 可以這么理解,bug是issue的子集。issue可以包含bug\feature\sercurity and others. https://github.com/langchain-ai/langchain/issues/32484 什么是pull request? 其實我真不是很理解,但不妨我來提pr https://github.com/langchain-ai/…

MySQL的存儲引擎:

目錄 InooDB引擎: MyISAM引擎: InooDB引擎與MyISAM存儲引擎的區別: Archive引擎: Blackhole引擎: CSV引擎: Memory引擎: Federated引擎: Merge引擎: NDB引擎&a…

Mock與Stub

一、核心概念與差異對比特性MockStub核心目的驗證對象間的交互行為提供預定義的固定響應驗證重點方法調用次數、參數、順序不關注調用過程,只關注結果行為模擬可編程的智能模擬靜態的簡單響應適用場景驗證協作關系隔離依賴、提供固定數據復雜性較高(需要…

香港服務器容器網絡插件的多節點通信性能基準測試

香港服務器容器網絡插件的多節點通信性能基準測試在云計算和容器化技術快速發展的今天,香港服務器因其優越的地理位置和網絡環境,成為眾多企業部署容器服務的首選。本文將深入探討香港服務器環境下容器網絡插件的多節點通信性能,通過詳實的基…

Vue3 學習教程,從入門到精通,Vue 3 全局 API 語法知識點及案例詳解(32)

Vue 3 全局 API 語法知識點及案例詳解 Vue 3 提供了豐富的全局 API,用于創建應用實例、注冊全局組件、指令、插件等。以下將詳細介紹 Vue 3 的主要全局 API,并結合詳細的案例代碼進行說明。每個案例代碼都包含中文注釋,幫助初學者更好地理解…

UE5多人MOBA+GAS 41、制作一個飛彈,添加準心索敵

文章目錄添加新角色(不寫了)創建一個發射技能創建一個飛彈類添加擊中特效添加準星UI獲取瞄準目標添加新角色(不寫了) 將原本的機器人藍圖改為BP_PlayerCharacter,以此創建子藍圖 創建動畫藍圖模板(具體就…

解決渲染抖動與滾動錨點定位不準確問題的方法與經驗分享

場景描述:React 虛擬列表(Virtualized List)是當我們在處理大列表時,為了提升性能而采用的一種技術。然而在實現過程中,可能會遇到渲染抖動問題以及滾動錨點定位不準確的問題。??解決方案:React虛擬列表實…

OpenAI 時隔多年再開源!GPT-OSS 120B/20B 發布,支持本地部署,消費級 GPU 即可運行

OpenAI 近期做出了一項令人矚目的戰略轉變:宣布推出兩款開放權重(Open Weight) 語言模型 GPT-OSS-120B 和 GPT-OSS-20B。這不僅是其自 GPT-2 之后首次開源模型,更關鍵的是,這兩款模型特別針對消費級硬件進行了深度優化…

MySQL高可用方案之MySQL Group Replication高可用架構搭建完全指南

MySQL Group Replication高可用架構搭建完全指南 前言 在當今互聯網應用中,數據庫高可用性已成為系統設計的核心需求。MySQL作為最流行的開源關系型數據庫之一,其高可用解決方案備受關注。MySQL Group Replication是MySQL官方推出的原生高可用解決方案,它基于Paxos協議實現…

網站SSL證書到期如何更換?簡單完整操作指南

----------------------------------------------------------------------------------------------- 這是我在我的網站中截取的文章,有更多的文章歡迎來訪問我自己的博客網站rn.berlinlian.cn,這里還有很多有關計算機的知識,歡迎進行留言或…

Spring Boot 開發三板斧:POM 依賴、注解與配置管理

引言 Spring Boot 是一個功能強大且廣受歡迎的框架,用于快速構建基于 Spring 的應用。它通過簡化配置和自動化管理,幫助開發者專注于業務邏輯的實現。然而,要想高效地開發 Spring Boot 應用,掌握以下三個關鍵點至關重要&#xff1…

kubernetes安裝搭建

個人博客站—運維鹿:http://www.kervin24.top/ CSDN博客—做個超努力的小奚: https://blog.csdn.net/qq_52914969?typeblog 一、kubernetes介紹 Kubernetes本質是一組服務器集群,它可以在集群的每個節點上運行特定的程序,來對節點中的容…

MySQL高可用方案之MySQL InnoDB Cluster高可用架構實戰指南:從零搭建到生產部署

MySQL InnoDB Cluster高可用架構實戰指南:從零搭建到生產部署 一、引言:為什么選擇MySQL InnoDB Cluster 在當今數據驅動的商業環境中,數據庫高可用性已成為企業IT基礎設施的核心需求。MySQL作為全球最受歡迎的開源關系型數據庫,其高可用解決方案備受關注。而MySQL InnoD…

祝融號無線電工作頻段

前面深入查證了旅行者1號的無線電工作頻段: 旅行者1號無線電工作頻段-CSDN博客 下面嘗試查證我國祝融號無線電工作頻段。 一、百度百科 來自百度百科: 我注意到一條關鍵信息: 這說明祝融號在國際上是有合作的,而不是我們國家單…

Kafka生產者相關原理

前言前面已經介紹了Kafka的架構知識并引出了Kafka的相關專業名稱進行解釋這次分享一下Kafka對生產者發送消息進行處理的運行機制和原理生產者發送消息兩種方式同步發送消息程序中線程執行完消息發送操作之后會等待Kafka的消息回應ack默認等待30秒沒有回應就會拋出異常等待時間和…