Nginx怎麼用?

一、什麼是Nginx?html

Nginx是一個高性能的HTTP和反向代理服務器,也是一個IMAP/POP3/SMTP服務器。Nginx是一款輕量級的Web服務器/反向代理服務器以及電子郵件代理服務器,其特色是佔用內存少,併發能力強,在同類型的網頁服務器中表現優秀 Nginx是由伊戈爾.塞索耶夫開發的,於2004年10月4日公開源碼,以類BSD許可證形式發佈 Nginx因它的穩定性,豐富的功能,示例配置文件和低系統資源的消耗而聞名 。python

二、有人用Nginx嗎?linux

中國大陸使用Nginx的網站:     淘寶,京東,騰訊,百度,新浪,網易...nginx

三、爲何選擇Nginx?(優勢web

做爲Web服務器:正則表達式

       一、相比Apache,Nginx使用資源更少,支持更多的併發鏈接,體現更高的效率,使Nginx倍受歡迎。算法

       二、Nginx可以支持高達50000個併發鏈接數的響應。  django

做爲負載均衡服務器:後端

      一、Nginx既能夠在內部直接支持Redis和PHP,也能夠支持做爲HTTP代理服務器對外進行服務,Nginx使用C編寫,不管是系統資源開銷仍是CPU使用效率都處理的很是優秀。     數組

      二、Nginx安裝很是簡單,配置文件很是簡潔,Bug很是少:Nginx啓動很是容易,而且幾乎能夠作到7 * 24小時不間斷運行,即便運行數個月也不須要從新啓動。

四、Nginx怎麼安裝?

Nginx安裝主要有兩種方式:     

      1、源碼安裝         

        1. 下載源碼壓縮包       

        2. 安裝源碼編譯依賴包 gcc,zlib,make...         

        3. 配置編譯模塊         

        4. make && make test         

        5. make    install     

    2、包管理工具安裝         

       1. 去官網將所使用依賴添加到包管理工具中         

       2. 更新包管理工具資源         

       3. 使用包管理工具安裝

五、Nginx怎麼控制?

啓動Nginx
	nginx 	[ -c  configpath]
信息查看
	nginx 	-v
	nginx	-V
控制Nginx
	nginx -s signal
		     stop 		快速關閉
		     quit		優雅的關閉
		     reload		從新加載配置
 
經過系統管理
	systemctl  status   nginx	查看nginx狀態
	systemctl  start    nginx	啓動nginx服務
	systemctl  stop     nginx   關閉nginx服務
	systemctl  enable   nginx	設置開機自啓
	systemctl  disable  nginx	禁止開機自啓

六、Nginx配置文件怎麼搞?

Nginx配置文件包含指定指令控制的模塊。

    指令分爲簡單指令和塊指令

            一個簡單指令由名稱和參數組成,以空格分隔,並以分號結尾。

            一個塊指令和簡單指令具備相同的結構,但不是以分號結束,而是以一個大括號包圍的一堆附。

    加指令結束

            若是一個大括號內能夠有其餘的指令,它就被稱爲一個上下文,好比(events,http,server,location)

指令以下:

nginx 	-t		不運行,僅測試配置文件
	nginx   -c     configpath	從指定路徑加載配置文件
	nginx   -t    -c    configpath      測試指定配置文件

七、Nginx配置文件結構怎麼搞?

main		全局設置
events{		工做模式,鏈接配置
	...
}
http{		http的配置
	...
	upstream xxx{	負載均衡配置
		...
	}
	server{		主機設置
		...
		location xxx{	URL匹配
			...
		}
	}
}
 
 
 
 
 
#main
user 	nginx;	worker進程運行的用戶和組
worker_processes	1;	 指定Nginx開啓的子進程數,多核CPU建議設置和CPU數量同樣的進程數
error_log	  xxx  level;用來定義全局錯誤日誌文件,一般放在var中,level有 debug,info,notice,										warn,error,crit
pid          xxx;		 指定進程id的存儲文件位置
 
 
 
#events
指定工做模式和以及鏈接上限
events{
	use epoll;
	worker_connections 1024;
}
use 指定nginx工做模式
	epoll	高效工做模式,linux
	kqueue	高效工做模式, bsd
	poll	標準模式
	select	標準模式
worker_connections 定義nginx每一個進程的最大鏈接數
	正向代理	鏈接數 * 進程數
	反向代理	鏈接數 * 進程數 / 4
	linux系統限制最多能同時打開65535個文件,默認上限就是65535,可解除 ulimit -n 65535
 
 
 
 
#http
最核心的模塊,主要負責http服務器相關配置,包含server,upstream子模塊
include mime.types;設置文件的mime類型
include xxxconfig;	包含其它配置文件,分開規劃解耦
default_type  xxx;	設置默認類型爲二進制流,文件類型未知時就會使用默認
log_format 	設置日誌格式
sendfile		設置高效文件傳輸模式
keepalive_timeout	設置客戶端鏈接活躍超時
gzip	 	gzip壓縮
 
 
 
#server
用來指定虛擬主機
listen 	80;		指定虛擬主機監聽的端口
server_name localhost;	指定ip地址或域名,多個域名使用空格隔開
charset  	utf-8;		指定網頁的默認編碼格式
error_page 500 502 /50x.html 指定錯誤頁面
access_log   xxx main;	指定虛擬主機的訪問日誌存放路徑
error_log   xxx main;	指定虛擬主機的錯誤日誌存放路徑
root	xxx;		指定這個虛擬主機的根目錄
index	xxx;		指定默認首頁
 
 
 
 
#location
核心中的核心,之後的主要配置都在這
主要功能:定位url,解析url,支持正則匹配,還能支持條件,實現動靜分離
語法
	location [modifier]  uri{
		...
	}
 
modifier 修飾符
	=	使用精確匹配而且終止搜索
	~	區分大小寫的正則表達式
	~*	不區分大小寫的正則表達式
	^~	最佳匹配,不是正則匹配,一般用來匹配目錄
	
經常使用指令
	alias	別名,定義location的其餘名字,在文件系統中可以找到,若是location指定了正則表達式,alias將會引用正則表達式中的捕獲,alias替代lication中匹配的部分,沒有匹配的部分將會在文件系統中搜索

 八、用Nginx部署項目怎麼搞?(Django爲例):

django 服務器 
	runserver
	wsgi
uwsgi : web服務器,多線程處理的不錯
	1. pip install uwsgi
	2. 工程目錄下建立uwsgi.ini 配置文件
	3. 書寫配置信息
	4. 使用uwsgi服務器
		- 啓動		uwsgi    --ini    uwsgi.ini
		- 中止		uwsgi    --stop    uwsgi.pid
 
nginx配置
	location /static{
		alias  xxx/static/;
	}
	location / {
		include uwsgi_params;
		uwsgi_pass localhost:8000;
	}

反向代理

proxy_pass  URL;		            #反向代理轉發地址,默認不轉發header
proxy_set_header HOST $host;        #須要轉發header則設置
proxy_method  POST;		            #轉發的方法名
proxy_hide_header Cache-Control;	#指定頭部不被轉發		
proxy_pass_header Cache-Control;	#設置哪些頭部轉發
proxy_pass_request_header on;	    #設置轉發http請求頭
proxy_pass_request_body on;	        #設置轉發請求體

upstream

負載均衡模塊,經過一個簡單的調度算法來實現客戶ip到後端服務器的負載平衡

#寫法 
    upstream  myproject{
	ip_hash;
          	server 127.0.0.1:8000;
	server 127.0.0.1:8001 down;
	server 127.0.0.1:8002 weight=3;
	server 127.0.0.1:8003 backup;
	fair;
          }
#負載均衡算法
	weight 	#負載權重
	down	#當前server不參與負載均衡
	backup	#其它機器全down掉或滿載使用此服務
	ip_hash	#按每一個請求的hash結果分配
	fair	#按後端響應時間來分(第三方的)
相關文章
相關標籤/搜索