負載均衡之Nginx詳解

目錄

  • 簡介

  • 常用命令

  • 功能

    • HTTP集群

    • TCP集群

    • 代理

    • 反向代理

    • 集群

    • 重定向

    • 靜態文件

    • HTTPS配置

    • 常見問題

    簡介

    nginx (“engine x”) 是一款輕量級,高性能的HTTP和反向代理服務器,也是一個IMAP/POP3/SMTP服務器。
    傳輸層的負載均衡有LVS(Linux) 和 NLB(Windows)

    常用命令

    • nginx -v // nginx 版本

    • start nginx // 啟動nginx,不阻塞命令窗口

    • nginx -s stop | nginx -s quit // 快速停止 | 有序退出

    • nginx -s reload // 加載配置重新啟動

    功能

    代理

    server?{????listen?8080;????????????????#?監聽8080端口????resolver?114.114.114.114;???#?dns解析地址??????location?/?{????????proxy_pass??$scheme://$host$request_uri;?#?代理到哪個地址????????proxy_set_header?Host?$http_host;????????#allow?127.0.0.1;???????#?允許127.0.0.1地址訪問????????#deny?all;??????????????#?禁止所有地址訪問(allow位置在上面,所以127.0.0.1仍能訪問)????}}

    反向代理

    server?{????listen?8081;????????????????????#?監聽8080端口????server_name??localhost;?????????#?虛擬hostName????location?/?{????????proxy_pass???http://127.0.0.1:8081;?#?反向代理到的服務器????}}

    集群

    HTTP集群

    upstream?clusterName?{????#?通過weight設置每臺服務器分配請求站的權重,值越高分配的越多。????server??127.0.0.1:9000?weight=4;?????server??127.0.0.1:8082?weight=1;?????#?ip_hash會計算ip對應hash值,然后分配到固定服務器????ip_hash;?}location?/?{????proxy_pass???http://clusterName;?#?反向代理到群集服務器????#?設置主機頭和客戶端真實地址,以便服務器獲取客戶端真實IP????proxy_set_header???Host?????????????$host;?????proxy_set_header???X-Real-IP????????$remote_addr;?????proxy_set_header???X-Forwarded-For??$proxy_add_x_forwarded_for;}

    TCP集群

    • 和http同級

      stream?{server?{????listen?1034;????proxy_pass?app;}upstream?app?{????server?192.168.0.111:5672;????server?192.168.0.112:5672;}}

    重定向

    location?/?{????rewrite?^/(.*)$?$1?permanent;}
    • flag

    • last – 基本上都用這個Flag。

    • break – 中止Rewirte,不在繼續匹配

    • redirect – 返回臨時重定向的HTTP狀態302

    • permanent – 返回永久重定向的HTTP狀態301

    靜態文件

    location?/^(.*)?{????root???html;????????????????????#?根目錄為html文件夾????index??$1?index.html?index.htm;?#?$1表示正則匹配第一項}

    綁定證書

    # HTTPS server  #  server {      listen       443 ssl;      server_name  localhost;        ssl_certificate      /nginx/server.cer; # 公鑰(一般為公鑰證書 + 中級證書)      ssl_certificate_key  /nginx/server.key; # 私鑰        ssl_session_cache    shared:SSL:1m;      ssl_session_timeout  5m;        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;      ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;      ssl_prefer_server_ciphers on;  }

    常見問題

    • 與IIS(80端口)沖突

      • 停用IIS 80端口的網站

      • 找到HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/HTTP下的Start修改其值為0,重啟電腦即可

      • 被System占用

      • 被IIS占用

      • nginx群集

        • 如果nginx服務器掛了,那我們的站點就直接掛了,可以通過keepalived組件來搭建多臺nginx服務提供服務。

      • error.log 錯誤日志:signal process started

        • 并非錯誤,只要執行-s reload就會發出

      ? 版權聲明
      THE END
      喜歡就支持一下吧
      點贊7 分享