1. 程式人生 > >高性能Nginx服務器-反向代理

高性能Nginx服務器-反向代理

bsp pac 更多 添加 dns解析 for linu dns 用戶

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服務器-反向代理