Nginx("engine x")是一款是由俄羅斯的程序設計師Igor Sysoev所開發高性能的 Web和 反向代理 服務器,也是一個 IMAP/POP3/SMTP 代理服務器。css
在高鏈接併發的狀況下,Nginx是Apache服務器不錯的替代品。html
\nginx
nginx能夠做爲web服務器,但更多的時候,咱們把它做爲網關,由於它具有網關必備的功能:web
- 反向代理 - 負載均衡 - 動態路由 - 請求過濾
Web服務器分2類:正則表達式
區分:web服務器不能解析jsp等頁面,只能處理js、css、html等靜態資源。spring
併發:web服務器的併發能力遠高於web應用服務器。後端
爲何高於web應用服務器呢?瀏覽器
由於Nginx是用的 NIO:not-blocking-IO 非阻塞IOtomcat
而tomcat則是用的BIO:blocking-IO 阻塞IO安全
nginx+tomcat搭配起來使用,能夠很大的提高效率,nginx只處理js、css、html。tomcat只處理其餘的請求。
下載安裝包: 官網地址: http://nginx.org/en/download.html 百度網盤--已經下載好的-- 1.16.1 版, 裏面還有個工具,等下咱們測試要用 連接:https://pan.baidu.com/s/1z4BnGjd-nVQqzrXJSJIP8g 提取碼:s63f
咳咳,這個嘛,解壓便可使用,比較舒服
start nginx.exe
有沒有啓動成功表面是看不出來的,由於只會閃一下。但打開任務管理器是能夠看到的,nginx默認進程是兩個,能夠修改。若是啓動進程不是2個,說明是有問題的。
還有就是訪問瀏覽器,直接訪問localhost,能夠看到一些信息。爲何會到這個頁面,咱們後面將配置的時候進行解釋
nginx.exe -s stop
也是看不出任何變化,但再看任務管理器就看不到nginx的進程了
nginx.exe -s reload
nginx有個強大的功能,就是修改了nginx中的東西,不須要從新啓動,7*24小時在線,甚至是更新了版本也不須要從新啓動。運行nginx.exe -s reload從新加載便可。 咱們在後面使用的時候進行演示
說到代理,首先咱們要明確一個概念,所謂代理就是一個表明、一個渠道;此時就涉及到兩個角色,一個是被代理角色,一個是目標角色。
被代理角色經過這個代理訪問目標角色完成一些任務的過程稱爲代理操做過程;如同生活中的專賣店,客人到 「華爲」 專賣店買了個手機,這個專賣店就是代理,被代理角色就是 「華爲」 廠家,目標角色就是用戶。
給你們舉個例子:好比說華爲官網,有不少人買華爲,而後把服務器擠爆了,人太多了,服務器響應時間慢。而後怎麼解決呢?就出現了你們熟悉的分佈式集羣。
經過上圖能夠看出,多個客戶端給服務器發送的請求,Nginx 服務器接收到以後,按照必定的規則分發給了後端的業務處理服務器進行處理了。
此時請求的來源也就是客戶端是明確的,可是請求具體由哪臺服務器處理的並不明確了,Nginx 扮演的就是一個反向代理角色。
客戶端是無感知代理的存在的,反向代理對外都是透明的,訪問者並不知道本身訪問的是一個代理。由於客戶端不須要任何配置就能夠訪問。
反向代理,"它代理的是服務端",主要用於服務器集羣分佈式部署的狀況下,反向代理隱藏了服務器的信息
保證內網的安全,一般將反向代理做爲公網訪問地址,Web 服務器是內網。負載均衡,經過反向代理服務器來優化網站的負載。
咱們來配置一個代理,將本地路徑經過域名的方式進行訪問
經過我在上面百度網盤分享的工具,將127.0.0.1映射到指定的域名
打開cmd,咱們ping一下剛剛映射的路徑, ok,成功
# nginx默認的的配置, 一個server就是一個代理 server { listen 80; # 監聽的端口號 server_name localhost; # 監聽的域名 # 監聽的路徑, / 是表示全部, 這裏能夠寫正則表達式 location / { root html; # root表明本地(nginx的本地,就是nginx的安裝路徑), 這裏表示的html目錄 index index.html index.htm; # 而後指向了index.html文件, # 這就是爲何訪問localhost爲何會跳轉到那個頁面的緣由了, # 你能夠看一下nginx安裝目錄下的html目錄,裏面都有什麼。 } # 監聽的錯誤響應碼 error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } }
將以下配置複製配置文件中便可,要會本身修改
server{ # 反向代理 listen 80; # 監聽的端口號 server_name www.manlu.com; # 監聽的域名 # 一些頭信息 proxy_set_header X-Forwarded-Host $host; proxy_set_header X-Forwarded-Server $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; # 監聽的路徑, / 是表示全部, 這裏能夠寫正則表達式 location / { proxy_pass http://127.0.0.1:10010; # proxy_pass 表明是代理到那個端口 proxy_connect_timeout 1000; # 鏈接超時時間 proxy_read_timeout 1000; # 超時超時時間 } }
能夠修改試試,修改完成後,不須要從新啓動,輸入從新加載命令便可,而後看你的任務管理器進程是否是變了。
建立一個簡單的項目-springboot,經過域名訪問接口
修改pom文件,添加springboot啓動器
<!--springboot啓動器--> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <version>2.2.4.RELEASE</version> </dependency> </dependencies>
建立配置文件
server: port: 10010 # 端口號
建立啓動器
package com.manlu; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; /** * @author manlu */ @SpringBootApplication public class NginxApplication { public static void main(String[] args) { SpringApplication.run(NginxApplication.class,args); } }
建立控制器controller
package com.manlu.controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; /** * @author 漫路h */ @RestController @RequestMapping("/nginx") public class NginxController { /** * 測試 * @param id * @return */ @GetMapping("/{id}") public String testNginx(@PathVariable Integer id){ System.out.println(id); return "nginx返回參數:"+id; } }
路徑: http://www.manlu.com/nginx/123
哈哈咱們今天就到這裏。你們想多瞭解就多百度百度啦~~