nginx基礎

Nginx****實現高可用

一、 課程目標

Nginx介紹

Ningx應用場景

Windows環境下安裝Nginx

Windows環境下實現反向代理

Windows環境下實現負載均衡

Nginx實現網關接口跨域解決方案

Nginx實現防盜鏈

Nginx防止DDOS

Linux環境下安裝Nginx

Linux環境下實現反向代理

Linux環境下nginx+keepalived實現高可用

Linux環境下Session共享解決方案

高并發解決方案

一、nginx入門

1.1什么是nginx?

nginx是一款高性能的http 服務器/反向代理服務器及電子郵件(IMAP/POP3)代理服務器。由俄羅斯的程序設計師Igor Sysoev所開發,官方測試nginx能夠支支撐5萬并發鏈接,并且cpu、內存等資源消耗卻非常低,運行非常穩定,所以現在很多知名的公司都在使用nginx。

1.2 nginx應用場景

1、http服務器。Nginx是一個http服務可以獨立提供http服務。可以做網頁靜態服務器。

2、虛擬主機。可以實現在一臺服務器虛擬出多個網站。例如個人網站使用的虛擬主機。

3、反向代理,負載均衡。當網站的訪問量達到一定程度后,單臺服務器不能滿足用戶的請求時,需要用多臺服務器集群可以使用nginx做反向代理。并且多臺服務器可以平均分擔負載,不會因為某臺服務器負載高宕機而某臺服務器閑置的情況。

<v:shapetype id="_x0000_t75" coordsize="21600,21600" o:spt="75" o:preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe" filled="f" stroked="f"><v:stroke joinstyle="miter"><v:formulas></v:formulas><v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"></v:path></v:stroke></v:shapetype><v:shape id="圖片_x0020_123" o:spid="_x0000_i1025" type="#_x0000_t75" style="width:415pt;height:517pt" o:ole=""><v:imagedata src="file:///C:/Users/86159/AppData/Local/Temp/msohtmlclip1/01/clip_image001.emz" o:title=""></v:imagedata></v:shape>

1.3 Windows環境下安裝Nginx

解壓:nginx-windows

雙擊: nginx.exe

<v:shape id="圖片_x0020_1" o:spid="_x0000_i1027" type="#_x0000_t75" style="width:413.5pt;height:165pt;
visibility:visible;mso-wrap-style:square"><v:imagedata src="file:///C:/Users/86159/AppData/Local/Temp/msohtmlclip1/01/clip_image002.png" o:title=""></v:imagedata></v:shape>

能看到nginx歡迎界面說明,nginx安裝成功

演示下 nginx做靜態服務器

1.3.1 windows常用命令

nginx.exe -s stop –停止

1.4 nginx優缺點

占內存小,可以實現高并發連接、處理響應快。

可以實現http服務器、虛擬主機、反向代理、負載均衡。

nginx配置簡單

可以不暴露真實服務器IP地址

1.4 nginx.conf 介紹

1.4.1 nginx.conf文件的結構

nginx的配置由特定的標識符(指令符)分為多個不同的模塊。 指令符分為簡單指令塊指令

  • 簡單指令格式:[name parameters;]
  • 塊指令格式:和簡單指令格式有一樣的結構,但其結束標識符不是分號,而是大括號{},塊指令內部可以包含simple directives 和block directives, 可以稱塊指令為上下文(e.g. events, http, server, location)

conf文件中,所有不屬于塊指令的簡單指令都屬于main上下文的,http塊指令屬于main上下文,server塊指令http上下文。

1.4.2 配置靜態訪問

Web server很重要一部分工作就是提供靜態頁面的訪問,例如images, html page。nginx可以通過不同的配置,根據request請求,從本地的目錄提供不同的文件返回給客戶端。 打開安裝目錄下的nginx.conf文件,默認配置文件已經在http指令塊中創建了一個空的server塊,在nginx-1.8.0中的http塊中已經創建了一個默認的server塊。內容如下:

|

server {

listen 80****;

server_name localhost;

location / {

root html;

index index.html index.htm;

}

error_page 500****502****503****504 /****50****x.html;

location = /****50****x.html {

root html;

}

**} **

|

1.4 nginx實現反向代理

1.4.1什么是反向代理?

反向代理(Reverse Proxy)方式是指以代理服務器來接受internet上的連接請求,然后將請求轉發給內部網絡上的服務器,并將從服務器上得到的結果返回給internet上請求連接的客戶端,此時代理服務器對外就表現為一個反向代理服務器。

啟動一個Tomcat 127.0.0.1:8080

使用nginx反向代理 8080.itmayiedu.com 直接跳轉到127.0.0.1:8080

1.4.1Host文件新增

|

127.0.0.1 8080.itmayiedu.com

127.0.0.1 b8081.itmayiedu.com

|

1.4.2 nginx.conf 配置

配置信息:

|

server {

listen 80;

server_name 8080.itmayiedu.com;

location / {

proxy_pass http://127.0.0.1:8080;

index index.html index.htm;

}

}

server {

listen 80;

server_name b8081.itmayiedu.com;

location / {

proxy_pass http://127.0.0.1:8081;

index index.html index.htm;

}

}

|

1.5 nginx實現負載均衡

1.5.1什么是負載均衡

負載均衡 建立在現有網絡結構之上,它提供了一種廉價有效透明的方法擴展網絡設備和服務器的帶寬、增加吞吐量、加強網絡數據處理能力、提高網絡的靈活性和可用性。

負載均衡,英文名稱為Load Balance,其意思就是分攤到多個操作單元上進行執行,例如Web服務器、FTP服務器、企業關鍵應用服務器和其它關鍵任務服務器等,從而共同完成工作任務。

<v:shape id="圖片_x0020_32" o:spid="_x0000_i1026" type="#_x0000_t75" style="width:415pt;height:223.5pt;visibility:visible;mso-wrap-style:square"><v:imagedata src="file:///C:/Users/86159/AppData/Local/Temp/msohtmlclip1/01/clip_image003.png" o:title=""></v:imagedata></v:shape>

1.5.3負載均衡策略

|

1****、輪詢(默認) 每個請求按時間順序逐一分配到不同的后端服務器,如果后端服務器down掉,能自動剔除。 upstream backserver { server 192.168.0.14; server 192.168.0.15; } 2****、指定權重 指定輪詢幾率,weight和訪問比率成正比,用于后端服務器性能不均的情況。 upstream backserver { server 192.168.0.14 weight=10; server 192.168.0.15 weight=10; } 3****、IP綁定 ip_hash 每個請求按訪問ip的hash結果分配,這樣每個訪客固定訪問一個后端服務器,可以解決session的問題。 upstream backserver { ip_hash; server 192.168.0.14:88; server 192.168.0.15:80; }

|

1.5.4配置代碼

|

upstream backserver {

server 127.0.0.1:8080;

server 127.0.0.1:8081;

}

server {

listen 80;

server_name www.itmayiedu.com;

location / {

proxy_pass http://backserver;

index index.html index.htm;

}

}

|

1.5.4宕機輪訓配置規則

|

server {

listen 80;

server_name www.itmayiedu.com;

location / {

proxy_pass http://backserver;

index index.html index.htm;

proxy_connect_timeout 1;

proxy_send_timeout 1;

proxy_read_timeout 1;

}

}

|

1.6 nginx解決網站跨域問題

配置:

|

server {

listen 80;

server_name www.itmayiedu.com;

location /A {

proxy_pass http://a.a.com:81/A;

index index.html index.htm;

}

location /B {

proxy_pass http://b.b.com:81/B;

index index.html index.htm;

}

}

|

1.7 nginx配置防盜鏈

|

location ~ .*.(jpg|jpeg|JPG|png|gif|icon)$ {

valid_referers blocked http://www.itmayiedu.com www.itmayiedu.com;

if ($invalid_referer) {

return 403;

}

}

|

1.7 nginx配置DDOS

1.7.1限制請求速度

設置Nginx、Nginx Plus的連接請求在一個真實用戶請求的合理范圍內。比如,如果你覺得一個正常用戶每兩秒可以請求一次登錄頁面,你就可以設置Nginx每兩秒鐘接收一個客戶端IP的請求(大約等同于每分鐘30個請求)。

|

limit_req_zone $binary_remote_addr zone=one:10m rate=30r/m;

server {

...

location /login.html {

limit_req zone=one;

...

}

}

|

limit_req_zone命令設置了一個叫one的共享內存區來存儲請求狀態的特定鍵值,在上面的例子中是客戶端IP($binary_remote_addr)。location塊中的limit_req通過引用one共享內存區來實現限制訪問/login.html的目的。

1.7.1限制請求速度

設置Nginx、Nginx Plus的連接數在一個真實用戶請求的合理范圍內。比如,你可以設置每個客戶端IP連接/store不可以超過10個。

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。