1. ·您當前的位置:主頁 > 技術教程 > nginx教程 >

      [nginx]Nginx配置詳解和負載均衡配置

      時間:2018-01-23 14:30csdn.net
      Nginx專為性能優化而開發,可以支持高并發連接性能是其最重要的考量,實現上非常注重效率,處理響應請求很快 。它支持內核Poll模型,能經受高負載的考驗,有報告表明能支持高達 50,000個并發連接數。

      一、Nginx簡介

      Nginx是俄羅斯人編寫的十分輕量級的HTTP服務器,Nginx,它的發音為“engine X”,是一個高性能的HTTP和反向代理服務器,同時也是一個IMAP/POP3/SMTP 代理服務器。
      Nginx以事件驅動的方式編寫,所以有非常好的性能,同時也是一個非常高效的反向代理、負載平衡。
      Nginx因為它的穩定性、豐富的模塊庫、靈活的配置和低系統資源的消耗而聞名.業界一致認為它是Apache2.2+mod_proxy_balancer的輕量級代替者,不僅是因為響應靜態頁面的速度非常快,而且它的模塊數量達到Apache的近2/3。對proxy和rewrite模塊的支持很徹底,還支持mod_fcgi、ssl、vhosts ,適合用來做mongrel clusters的前端HTTP響應。

      Nginx專為性能優化而開發,可以支持高并發連接性能是其最重要的考量,實現上非常注重效率,處理響應請求很快 。它支持內核Poll模型,能經受高負載的考驗,有報告表明能支持高達 50,000個并發連接數。

      Nginx具有很高的穩定性。

      其它HTTP服務器,當遇到訪問的峰值,或者有人惡意發起慢速連接時,也很可能會導致服務器物理內存耗盡頻繁交換,失去響應,只能重啟服務器。例如當前apache一旦上到200個以上進程,web響應速度就明顯非常緩慢了。而Nginx采取了分階段資源分配技術,使得它的CPU與內存占用率非常低。nginx官方表示保持10,000個沒有活動的連接,它只占2.5M內存,所以類似DOS這樣的攻擊對nginx來說基本上是毫無用處的。就穩定性而言,nginx比lighthttpd更勝一籌。

      Nginx支持熱部署。
      它的啟動特別容易, 并且幾乎可以做到7*24不間斷運行,即使運行數個月也不需要重新啟動。你還能夠在不間斷服務的情況下,對軟件版本進行進行升級。

      Nginx配置簡單,只需要修改conf下的nginx.conf文件就行,也就幾十行配置,簡單的十幾行就能搞定。


      啟動和停止Nginx

      Nginx目前只支持命令行操作,進入Nginx部署目錄。

      1)         啟動Nginx:start nginx
      2)         停止Nginx:nginx -s stop
      3)         修改配置后重啟:nginx -s reload

      二、nginx.conf 配置文件

      Nginx 配置文件主要分成四部分:main(全局設置)、http(HTTP 的通用設置)、server(虛擬主機設置)、location(匹配 URL 路徑)。還有一些其他的配置段,如 event,upstream 等。

      1、 通用設置

      user nginx
      指定運行 nginx workre 進程的用戶和組
      worker_rlimit_nofile #
      指定所有 worker 進程能夠打開的最大文件數
      worker_cpu_affinity
      設置 worker 進程的 CPU 粘性,以避免進程在 CPU 間切換帶來的性能消耗。如 worker_cpu_affinity 0001 0010 0100 1000;(四核)
      worker_processes 4
      worker 工作進程的個數,這個值可以設置為與 CPU 數量相同,如果開啟了 SSL 和 Gzip,那么可以適當增加此數值
      worker_connections 1000
      單個 worker 進程能接受的最大并發連接數,放在 event 段中
      error_log logs/error.log info
      錯誤日志的存放路徑和記錄級別
      use epoll
      使用 epoll 事件模型,放在 event 段中

      2、 http 服務器配置

      server {}:
      定義一個虛擬主機
      listen 80;
      定義監聽的地址和端口,默認監聽在本機所有地址上,該端口不能被其他程序占用,否則啟動不了,最開始80開始的端口。
      server_name NAME [...];
      定義虛擬主機名,可以使用多個名稱,還可以使用正則表達式或通配符。
      sendfile on
      開啟 sendfile 調用來快速的響應客戶端
      keepalive_timeout 10
      長連接超時時間,單位是秒。
      send_timeout
      指定響應客戶端的超時時間
      client_max_body_size 10m
      允許客戶端請求的實體最大大小
      root PATH
      設置請求 URL 所對應資源所在文件系統上的根目錄
      location [ = | ~ | ~* | ^~ ] URI { ... }
      設置一個 URI 匹配路徑
      =:精確匹配
      ~:正則表達式匹配,區分字符大小寫
      ~*:正則表達式匹配,不區分字符大小寫
      ^~:URI 的前半部分匹配,且不實用正則表達式
      優先級:
      = > location 完整路徑 > ^~ > ~ > ~* > location 起始路徑 > location /
      allow 和 deny
      基于 IP 訪問控制,如:
      僅允許 192.168.0.1/192.168.255.255 網段客戶端訪問
      allow 192.168.0.1/192.168.255.255;
      deny all;

      rewrite <REGEX> <REPL> <FLAG>
      URL 重寫,可以使用多種標記
      例如:
      rewrite ^/images/(.*\.jpg)$ /imgs/$1 break;
      可用的 flag:
      - last:重寫完成后,繼續匹配其他 rewrite 規則
      - break:重寫完成后不再繼續匹配
      - redirect:返回 302 重定向(臨時重定向),客戶端對重定向的 URL 發起新的請求
      - permanent:返回 301 重定向(永久重定向),客戶端對重定向的 URL 發起新的請求
      當我們把前段工程放到nginx的html目錄下的時候,我們訪問前段工程的時候就需要使用到URL的重寫
      例如:我們的工程項目叫test,主頁面是test目錄下的index.html頁面。
      配置如下:
      location/{
      rewrite "^/home/(.+)" /test/$1 last;
      }
      當我們訪問主頁面的時候使用127.0.0.1:80/home/index.htnl就OK了。

      熱門文章推薦

      請稍候...
      彩票软件开发公司