Nginx
是一個高性能的http
和反向代理服務器,其特色是佔用內存小,併發能力強。Nginx
專爲性能優化而開發,性能是其最重要的考量,能經受高負載的考驗,有報告代表能支持高達50000個併發鏈接數。html
正向代理:在瀏覽器中配置代理服務器,經過代理服務器進行互聯網訪問。java
反向代理:將請求發送到反向代理服務器,由反向代理服務器去選擇目標服務器獲取數據後,再返回給客戶端,此時反向代理服務器和目標服務器對外就是一個服務器,暴漏的是代理服務器地址。nginx
若是請求數過大,單個服務器解決不了,咱們增長服務器的數量,而後將請求分發到各個服務器上,將原先請求集中到單個服務器的狀況改成請求分發到多個服務器上,就是負載均衡。c++
爲了加快服務器的解析速度,能夠把動態頁面和靜態頁面交給不一樣的服務器來解析,加快解析速度,下降原來單個服務器的壓力。web
Nginx
須要幾個依賴包,分別是pcre
,openssl
,zlib
,在安裝nginx
以前須要先安裝這幾個依賴。正則表達式
pcre
壓縮包wget http://downloads.sourceforge.net/project/pcre/pcre/8.37/pcre-8.37.tar.gz
tar -xvf pcre-8.37.tar.gz
./configure
make && make install
pcre
版本號pcre-config --version
yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel
nginx
官網下載nginx
,官網地址:https://nginx.org/download/;tar -xvf nginx-1.12.2.tar.gz
解壓壓縮包;./configure
檢查;make && make isntall
編譯安裝;安裝成功後,在usr
會多出來一個文件夾,local/nginx
,在nginx
的sbin
文件夾下有啓動腳本。後端
在/usr/local/nginx/sbin
文件夾下,使用如下命令啓動瀏覽器
./nginx
而後瀏覽器訪問服務器ip,nginx
默認端口是80,出現如下頁面則證實nginx
安裝成功;tomcat
使用這些命令時須要進入/usr/local/nginx/sbin
文件夾性能優化
nginx
的版本號./nginx -v
nginx
./nginx
nginx
./nginx -s stop
nginx
./nginx -s reload
nginx
的配置文件在/usr/local/nginx/conf
中的nginx.conf
。咱們將nginx.conf
中註釋的內容刪除一下。
#user nobody; worker_processes 1; #pid logs/nginx.pid; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; sendfile on; #tcp_nopush on; #keepalive_timeout 0; keepalive_timeout 65; #gzip on; server { listen 80; server_name localhost; location / { root html; index index.html index.htm; } } }
nginx
的配置文件包含三部門。
1.全局塊
從配置文件開始到events
塊之間的內容,主要會設置一些nginx
服務器總體運行的配置指令。
worker_processes 1;
這個表明nginx
處理併發的關鍵配置,值越大,處理併發能力越強。可是會受到硬件、軟件等約束。
2.events塊
events
塊涉及的指令主要影響nginx
服務器與用戶網絡的鏈接。
worker_connections 1024;
這個表明nginx
支持的最大鏈接數。
3.http全局塊
nginx
服務器配置最頻繁的部分。http
全局塊包含http塊
和server塊
。
本地瀏覽器訪問nginx
服務器,nginx
服務器反向代理tomcat
服務器,當咱們請求nginx
的時候直接訪問到tomcat
。tomcat
的安裝這裏就不在講了,我將tomcat
和nginx
安裝在了同一臺服務器上。
因爲咱們的nginx
沒有域名,爲了演示,所以咱們在本地host
文件中配置nginx
服務器ip和域名進行綁定。這個host
文件的具體位置在C:\Windows\System32\drivers\etc
。在host文件中增長一句配置:
47.104.xxx.xxx www.javatrip.com
前面的ip是服務器的ip地址,後面的域名是我隨便起的用於綁定這個ip的一個域名。配置好以後,咱們使用域名訪問一下tomcat,若是能請求到omcat
默認頁面,則配置成功。
server { listen 80; server_name localhost; location / { root html; index index.html index.htm; } }
咱們將以上默認的配置文件作個修改:
server { listen 80; server_name 47.104.xxx.xxx; location / { root html; proxy_pass http://127.0.0.1:8080; index index.html index.htm; } }
以上這段配置的意思就是請求是47.104.xxx.xxx:80
,都會轉發至47.104.xxx.xxx:8080
。
如今瀏覽器訪問www.javatrip.com,發現直接轉發到了tomcat
上了,這樣簡單的反向代理就完成了。
咱們再解壓一個tomcat
,端口號設置爲8081,分別在兩個tomcat
下webapps
目錄下面新建dev
和prod
目錄,而後在該目錄下寫一個文件。
將請求www.javatrip.com:7001/dev
轉發到tomcat8080
,將請求www.javatrip.com:7001/prod
轉發到tomcat8081
。如今咱們的nginx
監聽的端口號是7001。打開nginx
的配置文件,新建一個server
以下:
server { listen 7001; server_name 47.104.xxx.xxx; location ~ /dev/ { proxy_pass http://127.0.0.1:8080; } location ~ /prod/ { proxy_pass http://127.0.0.1:8081; } }
而後試試效果,分別訪問`www.javatrip.com:7001/dev/a.html和www.javatrip.com:7001/prod/a.html,效果以下:
其中,配置轉發的時候用到了~,其含義內容以下:
nginx
若是路徑匹配那麼不測試正則表達式。負載均衡(Load Balance),意思是將負載(工做任務,訪問請求)進行平衡、分攤到多個操做單元(服務器,組件)上進行執行。是解決高性能,單點故障(高可用),擴展性(水平伸縮)的終極解決方案。
如今咱們想實現的效果是經過訪問www.javatrip.com:7001/prod/a.html,將請求分別分發到兩個tomcat上面去,首先咱們在tomcat8080
上新建一個prod
的文件夾,裏面放一個a.html
的文件。這樣tomcat8081
和tomcat8080
兩個上就都有了一個prod
的文件加且裏面有一個a.html
的文件。
首先,在http塊
中配置兩個tomcat
的服務列表
upstream myserver{ server 127.0.0.1:8080; server 127.0.0.1:8081; }
其次,在server塊
中配置規則:
server { listen 80; server_name 47.104.xxx.xxx; location / { root html; proxy_pass http://myserver; index index.html index.htm; } }
訪問地址:www.javatrip.com:7001/prod/a.html,多刷新幾回。發現有的請求到tomcat8080
上,有的請求到tomcat8081
上。
upstream myserver{ server 127.0.0.1:8080; server 127.0.0.1:8081; }
upstream myserver{ server 127.0.0.1:8080 weight=1; server 127.0.0.1:8081 weight=2; }
session
的問題。upstream myserver{ ip_hash; server 127.0.0.1:8080; server 127.0.0.1:8081; }
upstream myserver{ server 127.0.0.1:8080; server 127.0.0.1:8081; fair; }
因爲動靜分離在實際開發中也不經常使用,就再也不寫了。本篇文章作爲一個nginx入門,到這裏就基本完結了。