一、Nginx的應用概述
Nginx作爲一款高性能的http 服務器/反向代理服務器及電子郵件(IMAP/POP3)代理服務器。主要有以下3方面的應用:
1、http服務器
Nginx是一個http服務可以獨立提供http服務。可以做網頁靜態服務器。
2、虛擬主機
可以實現在一臺服務器虛擬出多個網站。例如個人網站使用的虛擬主機。
3、反向代理,負載均衡
當網站的訪問量達到一定程度後,單臺服務器不能滿足用戶的請求時,需要用多臺服務器集羣可以使用nginx做反向代理。並且多臺服務器可以平均分擔負載,不會因爲某臺服務器負載高宕機而某臺服務器閒置的情況。
二、什麼是虛擬主機
虛擬主機使用的是特殊的軟硬件技術,它把一臺服務器主機分成一臺臺“虛擬”的主機,每臺虛擬主機都可以具有獨立的域名,具有完整的Intemet服務器功能(WWW、FTP、Email等),同一臺主機上的虛擬主機之間是完全獨立的。從網站訪問者來看,每一臺虛擬主機和一臺獨立的主機完全一樣。
利用虛擬主機,不必爲每個要運行的網站提供一臺單獨的Nginx服務器或單獨運行一組Nginx進程。虛擬主機提供了在同一臺服務器、同一組Nginx進程上運行多個網站的功能。
可以實現在同一臺服務器上運行多個網站,並且網站之間相互獨立各不干擾。
三、Nginx基於IP的虛擬主機配置
1、在Linux系統中虛擬出兩個網卡,設置爲不同的IP地址
將/etc/sysconfig/network-scripts/ifcfg-eth0文件複製一份,命名爲ifcfg-eth0:1
cd /etc/sysconfig/network-scripts
cp ifcfg-eth0 ifcfg-eth0:1
修改其中內容:
DEVICE=eth0:1
IPADDR=192.168.72.49
其他項不用修改,然後執行service network restart 重啓網絡服務
修改nginx配置文件
在nginx/conf/nginx.conf是nginx核心配置文件,nginx對虛擬主機的配置,一個server就是一個虛擬主機。Nginx對於多虛擬主機的支持,主要是對server標籤的添加,指定location啓動路徑即可。
1)先將/nginx/html文件複製成兩份分別爲html-48,html-49,修改html/index.html文件,用於標記不同nginx首頁信息。
2)修改nginx.conf配置文件,添加兩個server節點,指定ip
server {
listen 80;
server_name 192.168.72.48;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root html-48;
index index.html index.htm;
}
}
server {
listen 80;
server_name 192.168.72.49;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root html-49;
index index.html index.htm;
}
}
3、reload nginx配置文件,命令:/nginx/bin/nginx -s reload
4、根據IP訪問首頁,效果圖
訪問192.168.72.48如下:
訪問192.168.72.49,如下:
這就是實現了在同一臺硬件服務器上,虛擬出兩個IP地址,使用1個nginx服務器,分別對兩個ip進行訪問,分別跳轉到不同的html頁面。
四、Nginx基於端口的虛擬主機配置
1、同樣,複製兩個html文件,修改index首頁信息用於標記訪問的是那個虛擬機
2、修改nginx.conf的對應server-port屬性值
server {
listen 81;
server_name 192.168.72.49;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root html-81;
index index.html index.htm;
}
}
server {
listen 82;
server_name 192.168.72.49;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root html-82;
index index.html index.htm;
}
}
3、訪問192.168.72.49:8081 和192.168.72.49:8081 兩個端口,可分別跳轉到兩個不同的index頁面,效果圖同上。
這就使得通過1個服務器IP,虛擬出多個端口號發佈相同服務,瀏覽器根據輸入的某個端口號確定訪問對應端口發佈的服務。
五、Nginx基於域名的虛擬主機配置
Last but not least,基於域名的虛擬主機應用相對於前兩者是更常用,一般情況都是使用域名對網站進行訪問,很少有直接輸入該網站的服務器IP。nginx基於域名的虛擬主機配置
1、首先設置host文件,指定IP 對應的域名,使得原本需要通過DNS服務器去解析域名所對應的IP,而host文件相當於本地的一份ip-域名的對應數據緩存,如果host中有這個對應關係,那訪問網站時,則直接跳轉到指定IP,而不再從DNS服務器上解析。這裏可以藉助SwitchHosts工具修改如下。
192.168.72.49 www.max.com
192.168.72.49 xixi.max.com
2、修改nginx.conf配置
server {
listen 80;
server_name www.max.com;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root html-max;
index index.html index.htm;
}
}
server {
listen 80;
server_name xixi.max.com;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root html-linxi;
index index.html index.htm;
}
}
這裏通過修改server-name,nginx啓動會通過這個server-name域名到本地的host文件中找到對應的IP,訪問到該IP下指定的location文件地址。
訪問xixi.max.com
訪問www.max.com