高性能Nginx服務器-反向代理
Nginx
Nginx是一款輕量級的Web 服務器/反向代理服務器及電子郵件(IMAP/POP3)代理服務器,並在一個BSD-like 協議下發行。由俄羅斯的程序設計師Igor Sysoev所開發,供俄國大型的入口網站及搜索引擎Rambler(俄文:Рамблер)使用。其特點是占有內存少,並發能力強,事實上nginx的並發能力確實在同類型的網頁服務器中表現較好.中國大陸使用nginx網站用戶有:新浪、網易、 騰訊等。
Nginx 是一個高性能的 Web 和反向代理服務器, 它具有有很多非常優越的特性:
作為 Web 服務器:相比 Apache,Nginx 使用更少的資源,支持更多的並發連接,體現更高的效率,這點使 Nginx 尤其受到虛擬主機提供商的歡迎。能夠支持高達 50,000 個並發連接數的響應,感謝 Nginx 為我們選擇了 epoll and kqueue 作為開發模型.
作為負載均衡服務器:Nginx 既可以在內部直接支持 Rails 和 PHP,也可以支持作為 HTTP代理服務器 對外進行服務。Nginx 用 C 編寫, 不論是系統資源開銷還是 CPU 使用效率都比 Perlbal 要好的多。
作為郵件代理服務器: Nginx 同時也是一個非常優秀的郵件代理服務器(最早開發這個產品的目的之一也是作為郵件代理服務器),Last.fm 描述了成功並且美妙的使用經驗。
Nginx 安裝非常的簡單,配置文件 非常簡潔(還能夠支持perl語法),Bugs非常少的服務器: Nginx 啟動特別容易,並且幾乎可以做到7*24不間斷運行,即使運行數個月也不需要重新啟動。你還能夠在 不間斷服務的情況下進行軟件版本的升級。
Nginx一般用戶七層負載均衡,其吞吐量有一定的限制。為了提高整體的吞吐量,會在DNS和Nginx之間引入LVS(軟件負載均衡器)、F5(硬負載均衡器) 可以做四層負載均衡,首先DNS解析到LVS(F5),讓後LVS(F5)轉發給Nginx,在有Nginx轉發給真實的服務器
Nginx基本安裝
Windows安裝Nginx
解壓:nginx-windows
雙擊: nginx.exe
能看到nginx歡迎界面說明,nginx安裝成功
演示下 nginx做靜態服務器
Linux安裝Nginx
1.安裝gcc gcc-c++(如新環境,未安裝請先安裝)
$ yum install -y gcc gcc-c++ |
2.安裝wget
$ yum -y install wget |
3.安裝PCRE庫
$ cd /usr/local/ $ wget http://jaist.dl.sourceforge.net/project/pcre/pcre/8.33/pcre-8.33.tar.gz $ tar -zxvf pcre-8.33.tar.gz $ cd pcre-8.33 $ ./configure $ make && make install 如果報錯:
在 linux 中執行 wget 命令提示 -bash: wget: command not found 解決方法 解決辦法 yum -y install wget
|
5.安裝SSL庫
$ cd /usr/local/ $ wget http://www.openssl.org/source/openssl-1.0.1j.tar.gz $ tar -zxvf openssl-1.0.1j.tar.gz $ cd openssl-1.0.1j $ ./config $ make && make install |
6.安裝zlib庫存
$ cd /usr/local/ $ wget http://zlib.net/zlib-1.2.11.tar.gz $ tar -zxvf zlib-1.2.11.tar.gz $ ./configure $ make && make install |
5.安裝nginx
$ cd /usr/local/ $ wget http://nginx.org/download/nginx-1.8.0.tar.gz $ tar -zxvf nginx-1.8.0.tar.gz $ cd nginx-1.8.0 $ ./configure $ make && make install |
6.安裝nginx
/usr/local/nginx/sbin/nginx |
Nginx應用場景
1、http服務器。Nginx是一個http服務可以獨立提供http服務。可以做網頁靜態服務器。
2、虛擬主機。可以實現在一臺服務器虛擬出多個網站,例如個人網站使用的虛擬機。
3、反向代理,負載均衡。當網站的訪問量達到一定程度後,單臺服務器不能滿足用戶的請求時,需要用多臺服務器集群可以使用nginx做反向代理。並且多臺服務器可以平均分擔負載,不會應為某臺服務器負載高宕機而某臺服務器閑置的情況。
4、nginz 中也可以配置安全管理、比如可以使用Nginx搭建API接口網關,對每個接口服務進行攔截。
Nginx目錄結構
Nginx-
|_ conf 配置目錄
|_ contrib
|_ docs 文檔目錄
|_ logs 日誌目錄
|_ temp 臨時文件目錄
|_ html 靜態頁面目錄
|_ nginx.exe 主程序
Nginx靜態資源
靜態資源訪問 存放在nginx的html頁面
Nginx虛擬主機配置
1、基於域名的虛擬主機,通過域名來區分虛擬主機——應用:外部網站
2、基於端口的虛擬主機,通過端口來區分虛擬主機——應用:公司內部網站,外部網站的管理後臺
3、基於ip的虛擬主機,幾乎不用。
基於虛擬主機配置域名
實現步驟:
需要建立/data/www /data/bbs目錄,windows本地hosts添加虛擬機ip地址對應的域名解析;對應域名網站目錄下新增index.html文件;
#當客戶端訪問www.itmayiedu.com,監聽端口號為80,直接跳轉到data/www目錄下文件 server { listen 80; server_name www.itmayiedu.com; location / { root data/www; index index.html index.htm; } } #當客戶端訪問www.itmayiedu.com,監聽端口號為80,直接跳轉到data/bbs目錄下文件 server { listen 80; server_name bbs.itmayiedu.com; location / { root data/bbs; index index.html index.htm; } } |
基於端口的虛擬主機
使用端口來區分,瀏覽器使用域名或ip地址:端口號 訪問
#當客戶端訪問www.itmayiedu.com,監聽端口號為8080,直接跳轉到data/www目錄下文件 server { listen 8080; server_name 8080.itmayiedu.com; location / { root data/www; index index.html index.htm; } }
#當客戶端訪問www.itmayiedu.com,監聽端口號為8081,直接跳轉到data/bbs目錄下文件 server { listen 8081; server_name 8081.itmayiedu.com; location / { root data/bbs; index index.html index.htm; } } |
Nginx配置反向代理
反向代理的作用
反向代理(Reverse Proxy)方式是指以代理服務器來接受internet上的連接請求,然後將請求轉發給內部網絡上的服務器,並將從服務器上得到的結果返回給internet上請求連接的客戶端,此時代理服務器對外就表現為一個反向代理服務器。
啟動一個Tomcat 127.0.0.1:8080
使用nginx反向代理 8080.itmayiedu.com 直接跳轉到127.0.0.1:8080
反向代理的好處
反向代理的好處隱藏真實內部ip地址,請求先訪問nginx代理服務器(外網可以訪問到),在使用nginx服務器轉發到真實服務器中。
反向代理的配置
###當客戶端訪問www.itmayiedu.com,監聽端口號為80直接跳轉到真實ip服務器地址 127.0.0.1:8080 server { listen 80; server_name www.itmayiedu.com; location / { proxy_pass http://127.0.0.1:8080; index index.html index.htm; } } ###當客戶端訪問www.itmayiedu.com,監聽端口號為80直接跳轉到真實ip服務器地址 127.0.0.1:8081 server { listen 80; server_name 8081.itmayiedu.com; location / { proxy_pass http://127.0.0.1:8081; index index.html index.htm; } }
|
高性能Nginx服務器-反向代理