·您當前的位置:主頁 > 技術教程 > 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了。

熱門文章推薦

請稍候...
北京快乐八开奖结果