目錄
前言
一、nginx簡介
1.什麼是 nginx 和可以做什麼事情
- Nginx 是高性能的 HTTP 和反向代理的web服務器,處理高併發能力是十分強大的,能經受高負 載的考驗,有報告表明能支持高達 50,000 個併發連接數。
- 其特點是佔有內存少,併發能力強,事實上nginx的併發能力確實在同類型的網頁服務器中表現較好,中國大陸使用nginx網站用戶有:百度、京東、新浪、網易、騰訊、淘寶等。
2.Nginx 作爲 web 服務器
- Nginx 可以作爲靜態頁面的 web 服務器,同時還支持 CGI 協議的動態語言,比如 perl、php 等。但是不支持 java。Java 程序只能通過與 tomcat 配合完成。Nginx 專爲性能優化而開發, 性能是其最重要的考量,實現上非常注重效率 ,能經受高負載的考驗,有報告表明能支持高 達 50,000 個併發連接數。https://lnmp.org/nginx.html
3. 正向代理
Nginx 不僅可以做反向代理,實現負載均衡。還能用作正向代理來進行上網等功能。 正向代理:如果把局域網外的 Internet 想象成一個巨大的資源庫,則局域網中的客戶端要訪問 Internet,則需要通過代理服務器來訪問,這種代理服務就稱爲正向代理。
- 簡單一點:通過代理服務器來訪問服務器的過程 就叫 正向代理。
- 需要在客戶端配置代理服務器進行指定網站訪問
4. 反向代理
- 反向代理,其實客戶端對代理是無感知的,因爲客戶端不需要任何配置就可以訪問。
- 我們只 需要將請求發送到反向代理服務器,由反向代理服務器去選擇目標服務器獲取數據後,在返 回給客戶端,此時反向代理服務器和目標服務器對外就是一個服務器,暴露的是代理服務器 地址,隱藏了真實服務器 IP 地址。
5. 負載均衡
- 增加服務器的數量,然後將請求分發到各個服務器上,將原先請求集中到單個服務器上的 情況改爲將請求分發到多個服務器上,將負載分發到不同的服務器,也就是我們所說的負 載均衡
- 客戶端發送多個請求到服務器,服務器處理請求,有一些可能要與數據庫進行交互,服 務器處理完畢後,再將結果返回給客戶端。
這種架構模式對於早期的系統相對單一,併發請求相對較少的情況下是比較適合的,成 本也低。但是隨着信息數量的不斷增長,訪問量和數據量的飛速增長,以及系統業務的複雜 度增加,這種架構會造成服務器相應客戶端的請求日益緩慢,併發量特別大的時候,還容易 造成服務器直接崩潰。很明顯這是由於服務器性能的瓶頸造成的問題,那麼如何解決這種情 況呢?
我們首先想到的可能是升級服務器的配置,比如提高 CPU 執行頻率,加大內存等提高機 器的物理性能來解決此問題,但是我們知道摩爾定律的日益失效,硬件的性能提升已經不能 滿足日益提升的需求了。最明顯的一個例子,天貓雙十一當天,某個熱銷商品的瞬時訪問量 是極其龐大的,那麼類似上面的系統架構,將機器都增加到現有的頂級物理配置,都是不能 夠滿足需求的。那麼怎麼辦呢?上面的分析我們去掉了增加服務器物理配置來解決問題的辦法,也就是說縱向解決問題 的辦法行不通了,那麼橫向增加服務器的數量呢?這時候集羣的概念產生了,單個服務器解 決不了,我們增加服務器的數量,然後將請求分發到各個服務器上,將原先請求集中到單個服務器上的情況改爲將請求分發到多個服務器上,將負載分發到不同的服務器,也就是我們 所說的負載均衡。
6.動靜分離
爲了加快網站的解析速度,可以把動態頁面和靜態頁面由不同的服務器來解析,加快解析速 度。降低原來單個服務器的壓力。
二、Nginx 的安裝(Linux:centos爲例)
nginx安裝時,可以到官網下載最新版本,centos版本的。
1. 準備工作
- 打開虛擬機,使用finallshell鏈接Linux操作系統
- 到nginx下載軟件
http://nginx.org/
- 先安裝其依賴軟件,最後安裝nginx。
- 依賴工具:pcre-8.3.7.tar.gz, openssl-1.0.1t.tar.gz, zlib-1.2.8.tar.gz, nginx-1.11.1.tar.gz。 我這裏也提供下。
2. 開始安裝
- 都有兩種方式,一種直接下載,第二種使用解壓包方式。這裏大多使用解壓包方式。
- 我的安裝路徑:/usr/feng/
- 安裝pcre
方式一、wget http://downloads.sourceforge.net/project/pcre/pcre/8.37/pcre-8.37.tar.gz 。
方拾二、上傳源碼壓縮包,解壓、編譯、安裝 三部曲。
1)、解壓文件, 進入pcre目錄,
2)、./configure 完成後,
3)、執行命令: make && make install
- 安裝 openssl
下載OpenSSL的地址:
http://distfiles.macports.org/openssl/
1)、解壓文件, 回到 pcre 目錄下,
2)、./configure 完成後,
3)、執行命令: make && make install
- 安裝zlib
1)、解壓文件, 回到 pcre 目錄下,
2)、./configure 完成後,
3)、執行命令: make && make install
- 安裝nginx
1)、解壓文件, 回到 pcre 目錄下,
2)、./configure 完成後,
3)、執行命令: make && make install
3. 運行nginx
- 安裝完nginx後,會在 路徑 /usr/local 下nginx 的文件夾。這是自動生成的。
- 進入這個目錄:
cd /usr/local/nginx
目錄內容如下:
- 進入sbin文件夾,裏面有兩個文件:nginx 和 nginx.old。
- 執行命令:./nginx 即可執行
- 測試啓動: ps -ef | grep nginx
已經啓動。
- 查看nginx默認端口(默認爲80),使用網頁的形式測試,(像Tomcat一樣。)
- 進入目錄查看端口:cd /usr/local/nginx/conf 下的 nginx.conf文件。這個文件也是nginx的配置文件。vim 下:
如下
- 輸入IP:80,則顯示:
4. 防火牆問題
在 windows 系統中訪問 linux 中 nginx,默認不能訪問的,因爲防火牆問題 (1)關閉防火牆 (2)開放訪問的端口號,80 端口
查看開放的端口號
firewall-cmd --list-all
設置開放的端口號
firewall-cmd --add-service=http –permanent
firewall-cmd --add-port=80/tcp --permanent
重啓防火牆
firewall-cmd –reload
三、 Nginx 的常用命令和配置文件
1. Nginx常用命令
a. 使用nginx操作命令前提
使用nginx操作命令前提:必須進入到nginx的自動生成目錄的下/sbin文件夾下。
nginx有兩個目錄:
第一個:安裝目錄,我放在:
/usr/feng/
第二個:自動生成目錄:
/usr/local/nginx/
b. 查看 nginx 的版本號
./nginx -v
c. 啓動 nginx
./nginx
d. 關閉nginx
./nginx -s stop
e. 重新加載 nginx
在目錄:/usr/local/nginx/sbin 下執行命令,不需要重啓服務器,自動編譯。
./nginx -s reload
2. Nginx配置文件
a. 配置文件位置
/usr/local/nginx/conf/nginx.conf
b. nginx 的組成部分
配置文件中有很多#, 開頭的表示註釋內容,我們去掉所有以 # 開頭的段落,精簡之後的 內容如下:
worker_processes 1;
events {
worker_connections 1024;
}http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;server {
listen 80;
server_name localhost;location / {
root html;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
- nginx 配置文件有三部分組成
第一部分:全局塊
從配置文件開始到 events 塊之間的內容,主要會設置一些影響nginx 服務器整體運行的配置指令,主要包括配 置運行 Nginx 服務器的用戶(組)、允許生成的 worker process 數,進程 PID 存放路徑、日誌存放路徑和類型以 及配置文件的引入等。
比如上面第一行配置的:
worker_processes 1;
這是 Nginx 服務器併發處理服務的關鍵配置,worker_processes 值越大,可以支持的併發處理量也越多,但是 會受到硬件、軟件等設備的制約。
第二部分:events塊
比如上面的配置:
events {
worker_connections 1024;
}
events 塊涉及的指令**主要影響 Nginx 服務器與用戶的網絡連接,常用的設置包括是否開啓對多 work process 下的網絡連接進行序列化,是否 允許同時接收多個網絡連接,選取哪種事件驅動模型來處理連接請求,每個 word process 可以同時支持的最大連接數等。**
上述例子就表示每個 work process 支持的最大連接數爲 1024.
這部分的配置對 Nginx 的性能影響較大,在實際中應該靈活配置。
第三部分:
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;server {
listen 80;
server_name localhost;location / {
root html;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
這算是 Nginx 服務器配置中最頻繁的部分,代理、緩存和日誌定義等絕大多數功能和第三方模塊的配置都在這裏。
需要注意的是:http 塊也可以包括 http全局塊、server 塊。
- http全局塊
http全局塊配置的指令包括文件引入、MIME-TYPE 定義、日誌自定義、連接超時時間、單鏈接請求數上限等。
- server 塊
這塊和虛擬主機有密切關係,虛擬主機從用戶角度看,和一臺獨立的硬件主機是完全一樣的,該技術的產生是爲了 節省互聯網服務器硬件成本。
每個 http 塊可以包括多個 server 塊,而每個 server 塊就相當於一個虛擬主機。
而每個 server 塊也分爲全局 server 塊,以及可以同時包含多個 locaton 塊。
- 全局 server 塊
最常見的配置是本虛擬機主機的監聽配置和本虛擬主機的名稱或IP配置。
- location 塊
一個 server 塊可以配置多個 location 塊。
這塊的主要作用是基於 Nginx 服務器接收到的請求字符串(例如 server_name/uri-string),對虛擬主機名稱 (也可以是IP 別名)之外的字符串(例如 前面的 /uri-string)進行匹配,對特定的請求進行處理。 地址定向、數據緩 存和應答控制等功能,還有許多第三方模塊的配置也在這裏進行。
四、 Nginx 反向代理 配置實例 1.1
1. 實現效果
- 打開瀏覽器,在瀏覽器地址欄輸入地址 www.123.com,跳轉到 liunx 系統 tomcat 主頁 面中
2. 準備工作
轉載自:https://blog.csdn.net/qq_40036754/article/details/102463099