Nginx概述
公司產品出現瓶頸?
我們公司項目剛剛上線的時候,并發量小,用戶使用的少,所以在低并發的情況下,一個jar包啟動應用就夠了,然后內部tomcat返回內容給用戶。
但是慢慢的,使用我們平臺的用戶越來越多了,并發量慢慢增大了,這時候一臺服務器滿足不了我們的需求了。
于是我們橫向擴展,又增加了服務器。這個時候幾個項目啟動在不同的服務器上,用戶要訪問,就需要增加一個代理服務器了,通過代理服務器來幫我們轉發和處理請求。
我們希望這個代理服務器可以幫助我們接收用戶的請求,然后將用戶的請求按照規則幫我們轉發到不同的服務器節點之上。這個過程用戶是無感知的,用戶并不知道是哪個服務器返回的結果,我們還希望他可以按照服務器的性能提供不同的權重選擇。保證最佳體驗!所以我們使用了Nginx。
什么是Nginx?
Nginx (engine x) 是一個高性能的HTTP和反向代理web服務器,同時也提供了IMAP/POP3/SMTP服務。Nginx是由伊戈爾·賽索耶夫為俄羅斯訪問量第二的Rambler.ru站點(俄文:Рамблер)開發的,第一個公開版本0.1.0發布于2004年10月4日。2011年6月1日,nginx 1.0.4發布。
其特點是占有內存少,并發能力強,事實上nginx的并發能力在同類型的網頁服務器中表現較好,中國大陸使用nginx網站用戶有:百度、京東、新浪、網易、騰訊、淘寶等。在全球活躍的網站中有12.18%的使用比率,大約為2220萬個網站。
Nginx 是一個安裝非常的簡單、配置文件非常簡潔(還能夠支持perl語法)、Bug非常少的服務。Nginx 啟動特別容易,并且幾乎可以做到7*24不間斷運行,即使運行數個月也不需要重新啟動。你還能夠不間斷服務的情況下進行軟件版本的升級。
Nginx代碼完全用C語言從頭寫成。官方數據測試表明能夠支持高達 50,000 個并發連接數的響應。
Nginx作用?
Http代理,反向代理:作為web服務器最常用的功能之一,尤其是反向代理。
正向代理
玩游戲時會用到VPN,打吃雞帶寬延遲的特別的慢,掛VPN就會非常快,因為中國目前不能訪問外國的網站的,比如訪問谷歌訪問不了,但是為什么掛了VPN就能夠訪問外網了,這里其實是正向代理起了作用。比如說你的電腦,掛了個VPN,就相當于你電腦做了個代理,它會幫你請求外部的資源,比如代理服務器在香港,香港就是可以訪問外網的,這個時候你的服務器請求香港服務器,香港服務器再去請求美國服務器,美國服務器就會返回數據到香港服務器,香港服務器就會返回數據給你。
代理客戶端的這種翻墻工具就是正向代理。與之同時,代理服務器端的就是反向代理。
動靜分離
比如你的項目里有非常多的靜態資源,比如你放了bootstrap、jquery的相關js文件,像這樣一堆靜態資源每次都要從你的jar包里面去加載就非常麻煩,那我希望有個靜態資源服務器用來存放這些靜態資源,他從靜態資源服務器這邊加載就好了,能夠提升一定的訪問速度
Nginx的安裝
windows下安裝
linux下安裝
Nginx常用命令
cd /usr/local/nginx/sbin/
./nginx 啟動
./nginx -s stop 停止 -s 表示在當前目錄下,所以必須要先進入/usr/local/nginx/sbin目錄下執行該命令才不會出問題
./nginx -s quit 安全退出
./nginx -s reload 重新加載配置文件
ps aux|grep nginx 查看nginx進程
nginx配置文件講解
nginx.conf這個文件里的內容主要分為三大模塊,一個是nginx的全局配置,一個是events模塊,一個是http模塊。
在http模塊中有很多個server的配置,server就是可以配置不同的服務。可以看到nginx.conf配置文件中,有沒有注釋掉的80端口的服務,也有被注釋掉的443端口的服務。
# localhost配置
# 此時訪問是:http://localhost:80/
localhost / { #配置為/,當訪問80端口的根目錄,那么就會走到這里面的相關配置#xxx 相關配置
}# 此時訪問是:http://localhost:80/admin
localhost /admin { #配置為/,當訪問80端口的/admin路徑,那么就會走到這里面的相關配置#xxx 相關配置
}
謹記:所有的配置文件后面一定要以;(分號)結尾
演示
需求:我有個jar,使用java -jar xxx.jar運行起來端口分別為8080、8081的兩個服務,但是我得訪問localhost:8080/和localhost:8081,這時候需要使用nginx進行反向代理和負載均衡處理。
當訪問localhost:80,直接訪問到jar包里內容時,就成功了。