溫馨提示×

nginx在centos上的最佳實踐是什么

小樊
42
2025-09-17 20:17:55
欄目: 智能運維

Nginx在CentOS上的最佳實踐

1. 安裝:選擇穩定來源與最小化安裝

優先通過CentOS官方Yum倉庫或Nginx官方倉庫安裝,避免第三方源的安全風險。若需最新穩定版,可添加Nginx官方倉庫:

sudo yum install -y epel-release
sudo rpm --import http://nginx.org/keys/nginx_signing.key
sudo yum install -y http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
sudo yum install -y nginx

安裝后通過nginx -v驗證版本,確保安裝成功。

2. 安全加固:降低攻擊面

  • 隱藏版本信息:修改nginx.conf,添加server_tokens off;,避免錯誤頁面泄露Nginx版本,減少針對性攻擊。
  • 限制訪問權限:通過allow/deny指令限制敏感目錄(如/admin)的IP訪問,或使用geo模塊定義IP白名單。
  • 禁用目錄遍歷:在靜態文件配置中添加autoindex off;,防止用戶列出目錄內容。
  • 使用HTTPS:通過Let’s Encrypt免費獲取SSL證書,配置HTTP/2協議(listen 443 ssl http2;),并優化SSL參數(如ssl_protocols TLSv1.2 TLSv1.3;、ssl_ciphers HIGH:!aNULL:!MD5;)。
  • 調整安全頭:添加add_header X-Content-Type-Options "nosniff";(防止MIME類型嗅探)、add_header X-Frame-Options "SAMEORIGIN";(防止點擊劫持)。

3. 性能優化:提升并發處理能力

  • 調整工作進程:設置worker_processes auto;(自動匹配CPU核心數),避免進程過多導致上下文切換開銷。
  • 優化連接數:在events塊中設置worker_connections 1024;(單進程最大連接數),配合use epoll;(Linux高效事件模型)提升高并發處理能力。
  • 啟用壓縮:通過gzip on;開啟Gzip壓縮,設置gzip_comp_level 5;(平衡壓縮率與CPU消耗)、gzip_types text/plain text/css application/json;(針對文本類資源壓縮),減少傳輸數據量。
  • 靜態文件緩存:對圖片、CSS、JS等靜態資源設置expires 30d;(緩存30天)和add_header Cache-Control "public";,降低后端負載。
  • 長連接優化:設置keepalive_timeout 65;(保持連接65秒)、keepalive_requests 100;(單連接最大請求數),減少TCP握手開銷。

4. 高可用與負載均衡:保障服務連續性

  • 主備服務器配置:使用Keepalived實現VRRP協議,配置主備Nginx服務器的虛擬IP(VIP),主服務器故障時自動切換至備用服務器。
  • 負載均衡:通過upstream模塊定義后端服務器集群,使用least_conn;(最少連接算法)分配請求,提升動態內容處理效率。例如:
    upstream backend {
        least_conn;
        server backend1.example.com;
        server backend2.example.com;
    }
    server {
        location / {
            proxy_pass http://backend;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
        }
    }
    

5. 配置管理與維護:確保健壯性

  • 配置文件分離:將虛擬主機配置放在/etc/nginx/conf.d/目錄下(如example.conf),通過符號鏈接激活(ln -s /etc/nginx/conf.d/example.conf /etc/nginx/sites-enabled/),便于管理。
  • 語法檢查:修改配置文件后,使用nginx -t命令測試語法,避免因配置錯誤導致服務中斷。
  • 日志優化:調整日志級別(error_log /var/log/nginx/error.log crit;),減少不必要的訪問日志記錄(access_log off;),提升性能;定期歸檔日志(如使用logrotate)。
  • 開機自啟:通過systemctl enable nginx設置Nginx開機自動啟動,確保服務器重啟后服務可用。

6. 動態內容處理:與后端協作

  • PHP-FPM集成:安裝PHP-FPM(sudo yum install -y php-fpm),配置www.conf中的listen = /run/php-fpm/php-fpm.sock(Unix socket通信)和user = nginx(與Nginx運行用戶一致);在Nginx中添加location ~ \.php$塊,設置fastcgi_pass unix:/run/php-fpm/php-fpm.sock;,實現PHP動態內容處理。
  • 動靜分離:將靜態文件(如/static/)直接由Nginx處理(root /var/www/static;),動態請求(如/api/)轉發至后端服務器(如Tomcat、PHP-FPM),提升整體性能。

7. 監控與故障排查:及時發現問題

  • 狀態監控:通過nginx-module-vts模塊收集Nginx狀態信息(如請求數、連接數),結合htop、top等工具監控系統資源使用情況。
  • 日志分析:使用awk、grep等命令分析Nginx訪問日志(/var/log/nginx/access.log),識別高頻錯誤(如404、500)或惡意請求(如頻繁掃描);借助ELK(Elasticsearch+Logstash+Kibana)實現可視化分析。
  • 備份配置:定期備份/etc/nginx/目錄(如使用tar -czvf nginx_backup.tar.gz /etc/nginx/),防止配置丟失。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女