一 Nginx簡介
1.1 什么是Nginx
Nginx
是一個高性能的http
和反向代理服務器,其特點是占用內存小,并發能力強。Nginx
專為性能優化而開發,性能是其最重要的考量,能經受高負載的考驗,有報告表明能支持高達50000個并發連接數。
1.2 反向代理
正向代理:在瀏覽器中配置代理服務器,通過代理服務器進行互聯網訪問。
反向代理:將請求發送到反向代理服務器,由反向代理服務器去選擇目標服務器獲取數據后,再返回給客戶端,此時反向代理服務器和目標服務器對外就是一個服務器,暴漏的是代理服務器地址。
1.3 負載均衡
如果請求數過大,單個服務器解決不了,我們增加服務器的數量,然后將請求分發到各個服務器上,將原先請求集中到單個服務器的情況改為請求分發到多個服務器上,就是負載均衡。
1.4 動靜分離
為了加快服務器的解析速度,可以把動態頁面和靜態頁面交給不同的服務器來解析,加快解析速度,降低原來單個服務器的壓力。
二 Nginx的安裝
Nginx
需要幾個依賴包,分別是pcre
,openssl
,zlib
,在安裝nginx
之前需要先安裝這幾個依賴。
2.1 安裝pcre依賴
-
使用命令下載
pcre
壓縮包
1wget http://downloads.sourceforge.net/project/pcre/pcre/8.37/pcre-8.37.tar.gz
登錄后復制
-
解壓壓縮文件
1tar -xvf pcre-8.37.tar.gz
登錄后復制
-
進入解壓后的名錄,執行以下命令
1./configure
登錄后復制
-
使用以下命令進行編譯安裝
1make && make install
登錄后復制
-
查看安裝的
pcre
版本號
1pcre-config --version
登錄后復制
2.2 安裝openssl,zlib等依賴
1yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel
登錄后復制
2.3 安裝nginx
-
nginx
官網下載nginx
,官網地址:https://nginx.org/download/; -
將壓縮包拖到服務器上;
-
使用命令
tar -xvf nginx-1.12.2.tar.gz
解壓壓縮包; -
使用命令
./configure
檢查; -
使用命令
make && make isntall
編譯安裝;
安裝成功后,在usr
會多出來一個文件夾,local/nginx
,在nginx
的sbin
文件夾下有啟動腳本。
2.4 啟動nginx
在/usr/local/nginx/sbin
文件夾下,使用以下命令啟動
1./nginx
登錄后復制登錄后復制
然后瀏覽器訪問服務器ip,nginx
默認端口是80,出現以下頁面則證明nginx
安裝成功;
2.5 Nginx常用的命令
使用這些命令時需要進入/usr/local/nginx/sbin
文件夾
-
查看
nginx
的版本號1./nginx -v
登錄后復制
-
啟動
nginx
1./nginx
登錄后復制登錄后復制
-
關閉
nginx
1./nginx -s stop
登錄后復制
-
重新加載
nginx
1./nginx -s reload
登錄后復制
2.6 Nginx的配置文件
nginx
的配置文件在/usr/local/nginx/conf
中的nginx.conf
。我們將nginx.conf
中注釋的內容刪除一下。1#user nobody; 2worker_processes 1; 3 4#pid logs/nginx.pid; 5 6events { 7 worker_connections 1024; 8} 9 10http { 11 include mime.types; 12 default_type application/octet-stream; 13 14 sendfile on; 15 #tcp_nopush on; 16 17 #keepalive_timeout 0; 18 keepalive_timeout 65; 19 20 #gzip on; 21 22 server { 23 listen 80; 24 server_name localhost; 25 26 location / { 27 root html; 28 index index.html index.htm; 29 } 30 } 31}
登錄后復制
nginx
的配置文件包含三部門。1.全局塊
從配置文件開始到
events
塊之間的內容,主要會設置一些nginx
服務器整體運行的配置指令。1worker_processes 1;
登錄后復制
這個代表
nginx
處理并發的關鍵配置,值越大,處理并發能力越強。但是會受到硬件、軟件等約束。2.events塊
events
塊涉及的指令主要影響nginx
服務器與用戶網絡的連接。1worker_connections 1024;
登錄后復制
這個代表
nginx
支持的最大連接數。3.http全局塊
nginx
服務器配置最頻繁的部分。http
全局塊包含http塊
和server塊
。三 Nginx配置反向代理
3.1 ngix代理流程
本地瀏覽器訪問
nginx
服務器,nginx
服務器反向代理tomcat
服務器,當我們請求nginx
的時候直接訪問到tomcat
。tomcat
的安裝這里就不在講了,我將tomcat
和nginx
安裝在了同一臺服務器上。3.2 配置ip和域名的綁定關系
由于我們的
nginx
沒有域名,為了演示,因此我們在本地host
文件中配置nginx
服務器ip和域名進行綁定。這個host
文件的具體位置在C:\Windows\System32\drivers\etc
。在host文件中增加一句配置:147.104.xxx.xxx www.javatrip.com
登錄后復制
前面的ip是服務器的ip地址,后面的域名是我隨便起的用于綁定這個ip的一個域名。配置好之后,我們使用域名訪問一下tomcat,如果能請求到
tomcat
默認頁面,則配置成功。3.3 在nginx配置請求轉發
1 server { 2 listen 80; 3 server_name localhost; 4 5 location / { 6 root html; 7 index index.html index.htm; 8 } 9 }
登錄后復制
我們將以上默認的配置文件做個修改:
1server { 2 listen 80; 3 server_name 47.104.xxx.xxx; 4 5 location / { 6 root html; 7 proxy_pass http://127.0.0.1:8080; 8 index index.html index.htm; 9 } 10}
登錄后復制
以上這段配置的意思就是請求是
47.104.xxx.xxx:80
,都會轉發至47.104.xxx.xxx:8080
。現在瀏覽器訪問www.javatrip.com,發現直接轉發到了
tomcat
上了,這樣簡單的反向代理就完成了。3.4 根據請求后綴分發
我們再解壓一個
tomcat
,端口號設置為8081,分別在兩個tomcat
下webapps
目錄下面新建dev
和prod
目錄,然后在該目錄下寫一個文件。將請求
www.javatrip.com:7001/dev
轉發到tomcat8080
,將請求www.javatrip.com:7001/prod
轉發到tomcat8081
。現在我們的nginx
監聽的端口號是7001。打開nginx
的配置文件,新建一個server
如下:1server { 2 listen 7001; 3 server_name 47.104.xxx.xxx; 4 5 location ~ /dev/ { 6 proxy_pass http://127.0.0.1:8080; 7 } 8 9 location ~ /prod/ { 10 proxy_pass http://127.0.0.1:8081; 11 } 12}
登錄后復制
然后試試效果,分別訪問www.javatrip.com:7001/dev/a.html和www.javatrip.com:7001/prod/a.html,效果如下:
其中,配置轉發的時候用到了~,其含義內容如下:
-
= 嚴格匹配。如果這個查詢匹配,那么將停止搜索并立即處理此請求。
-
~ 為區分大小寫匹配(可用正則表達式)
-
!~為區分大小寫不匹配
-
~* 為不區分大小寫匹配(可用正則表達式)
-
!~*為不區分大小寫不匹配
-
^~ 如果把這個前綴用于一個常規字符串,那么告訴
nginx
如果路徑匹配那么不測試正則表達式。四 Nginx配置負載均衡
4.1 什么是負載均衡
負載均衡(Load Balance),意思是將負載(工作任務,訪問請求)進行平衡、分攤到多個操作單元(服務器,組件)上進行執行。是解決高性能,單點故障(高可用),擴展性(水平伸縮)的終極解決方案。
現在我們想實現的效果是通過訪問www.javatrip.com:7001/prod/a.html,將請求分別分發到兩個tomcat上面去,首先我們在
tomcat8080
上新建一個prod
的文件夾,里面放一個a.html
的文件。這樣tomcat8081
和tomcat8080
兩個上就都有了一個prod
的文件加且里面有一個a.html
的文件。4.2 配置nginx.conf
首先,在
http塊
中配置兩個tomcat
的服務列表1upstream myserver{ 2 server 127.0.0.1:8080; 3 server 127.0.0.1:8081; 4}
登錄后復制登錄后復制
其次,在
server塊
中配置規則:1server { 2 listen 80; 3 server_name 47.104.xxx.xxx; 4 5 location / { 6 root html; 7 proxy_pass http://myserver; 8 index index.html index.htm; 9 } 10}
登錄后復制
4.3 測試效果
訪問地址:www.javatrip.com:7001/prod/a.html,多刷新幾次。發現有的請求到
tomcat8080
上,有的請求到tomcat8081
上。4.4 nginx支持的幾種負載策略
-
輪詢(默認):每個請求按時間順序逐一分配到不同的服務器,如果服務器down了,會自動剔除。
1upstream myserver{ 2 server 127.0.0.1:8080; 3 server 127.0.0.1:8081; 4}
登錄后復制登錄后復制
-
weight(權重):默認為1,權重越高,分配的請求越多。
1upstream myserver{ 2 server 127.0.0.1:8080 weight=1; 3 server 127.0.0.1:8081 weight=2; 4}
登錄后復制
-
ip hash:每個請求按訪問ip的hash結果分配,這樣每個訪客固定訪問一個后臺服務器,可以解決
session
的問題。1upstream myserver{ 2 ip_hash; 3 server 127.0.0.1:8080; 4 server 127.0.0.1:8081; 5}
登錄后復制
-
fair(第三方):按后端響應時間進行分配,響應時間越短分配的請求越多。
1upstream myserver{ 2 server 127.0.0.1:8080; 3 server 127.0.0.1:8081; 4 fair; 5}
登錄后復制
由于動靜分離在實際開發中也不常用,就不再寫了。本篇文章做為一個nginx入門,到這里就基本完結了。最后留給大家一個問題思考一下:如何保證nginx的高可用?
-
-
-
-
-
-
-
-
以上就是Nginx超簡單教程,入門看這篇就夠了的詳細內容,更多請關注www.92cms.cn其它相關文章!