一、前言
首先需要確保在你的 Linux 系統中已經正確安裝 Nginx ,當然如果沒有安裝 Nginx 請參考
系統內容:
Linux 環境: centos-7.2
Nginx 環境: nginx-1.9.9
二、關於 Nginx
Nginx是一款高效能的http 伺服器/反向 Proxy伺服器及電子郵件(IMAP/POP3)Proxy 伺服器。由俄羅斯的程式設計師Igor Sysoev所開發,官方測試nginx能夠支支撐5萬並發連結,並且cpu、記憶體等資源消耗卻非常低,運行非常穩定。開源、免費。
三、使用 Nginx 能做什嗎?
1、http伺服器:Nginx是一個http服務可以獨立提供http服務。可以做網頁靜態伺服器。
2、虛擬機器主機:可以實現在一台伺服器虛擬出多個網站。例如個人網站使用的虛擬機器主機。
3、反向 Proxy/負載平衡:當網站的訪問量達到一定程度後,單台伺服器不能滿足使用者的請求時,需要用多台伺服器叢集可以使用nginx做反向 Proxy。並且多台伺服器可以平均分擔負載,不會因為某台伺服器負載高宕機而某台伺服器閑置的情況。
四、使用 Nginx 實現虛擬機器主機
在這兒我們需要知道,為什麼需要建立虛擬機器主機,在實際生產環境中,我們的業務都是通過公網進行訪問的,
我在搭建雲端服務器時,一個雲端服務器對應一個公網 IP ,所以公網 IP 對於一般的公司是非常稀缺的資源,
對於一些大型的公司,如:BAT,可能就會無所謂了。
所以在這兒使用 Nginx 實現虛擬機器主機,可以實現在同一台服務運行多個網站,而且網站之間互相不干擾。
同一個伺服器可能有一個ip,網站需要使用80連接埠,但是網站的網域名稱不同。
區分不同的網站有三種方式:
1、http服務
2、實現虛擬機器
1) 基於ip的虛擬機器
2) 基於連接埠的虛擬機器
3) 基於網域名稱的虛擬機器
3、反向 Proxy、負載平衡
五、IP區分虛擬機器主機
在一台伺服器上綁定多個 IP 位址。
方法一:
使用標準的網路設定工具(比如ifconfig和route命令)添加lP別名,
輸入命令 “ ifconfig ” 查看當前 ip 配置情況,如:
在 ens33 網卡再綁定一個 ip:192.168.78.142 ,命名該網卡為 ens33:1
/sbin/ifconfig ens33:1 192.168.78.142 broadcast 192.168.78.255 netmask 255.255.255.0 up/sbin/route add -host 192.168.78.142 dev ens33:1
虛擬網卡建立完成後,如:
方法二:
1、將 /etc/sysconfig/network-scripts/ifcfg-ens33 檔案複製一份,
進入到該目錄,輸入命令 “ cp ifcfg-ens33 ifcfg-ens33:1 -r ” 命名為 ifcfg-ens33:1 ,如:
2、修改設定檔,輸入命令 “ vi ifcfg-ens33:1 ” ,修改如下內容,
NAME=ens33:1DEVICE=ens33:1IPADDR=192.168.78.142
其他項不用修改,修改完成後,如:
建立完成後,測試新的 IP 是否綁定成功,在 DOS 視窗中輸入命令 “ ping 192.168.78.142 ” ,如:
注意:使用方法一綁定的 IP ,在系統重啟後,會自動解除綁定,需要重新綁定,方法二則是永久的,這個是實操的結論。
3、重啟系統,
輸入命令 “ reboot ” ,重啟系統再輸入命令 “ ifconfig ” 就可以看到正常建立了一個新的網卡 ,
如:
六、nginx 實現虛擬機器
1)、配置nginx基於ip地址的虛擬機器主機
準備兩個標識nginx 的 HTML,用於在測試時,好區別:進入到 /usr/local/nginx 目錄下,將 html 分別複製兩份,
在修改下面 index.html 的內容,這兒較簡單就不在寫了,如果不知道請留言或私信,如:
修改 nginx 的設定檔,輸入命令 “ vi conf/nginx.config ”
方便讀者的複製,我在這兒把不需要的刪除了,內容如下:
server { listen 80; server_name 192.168.78.141; location / { root html-141; index index.html index.htm; } } server { listen 80; server_name 192.168.78.142; location / { root html-142; index index.html index.htm; } }
如所示:
測試nginx 虛擬機器主機是否可以正常訪問,
測試 192.168.78.141 虛擬機器主機,如:
測試 192.168.78.142 虛擬機器主機,如:
2)、配置 nginx 基於連接埠的虛擬機器主機
還是老規矩,準備兩個標識 nginx 的 HTML,用於在測試時好區別:進入到 /usr/local/nginx 目錄下,將 html 分別複製兩份,
在修改下面 index.html 的內容,這兒較簡單就不在寫了,如果不知道請留言或私信,如:
修改 nginx 的設定檔,輸入命令 “ vi conf/nginx.config ”
方便讀者的複製,內容如下:
server { listen 81; server_name 192.168.78.141; location / { root html-81; index index.html index.htm; } } server { listen 82; server_name 192.168.78.141; location / { root html-82; index index.html index.htm; } }
如所示:
重啟Nginx 後,測試nginx 虛擬機器主機是否可以正常訪問,
測試 81連接埠的 虛擬機器主機,如:
測試 82連接埠的 虛擬機器主機,如:
3)、基於網域名稱的虛擬機器主機
基於網域名稱的虛擬機器主機是最有用的虛擬機器主機配置方式。
即一個網域名稱只能綁定一個ip地址,一個ip地址可以被多個網域名稱綁定。
實現基於網域名稱的虛擬機器主機,在這兒還需要修改 Linux 的 HostName,當然還可以通過 這個工具進行修改 ,對於互連網開發的人來說,經常變更 host 必不可免。每次我們都一遍一遍的去修改hosts檔案真是很累,如果能更快速的修改成不同hosts,這兒為大家推薦一個好用的軟體 SwitchHosts ,輕鬆一鍵切換。
以管理員身份開啟,然後就可以設定網域名稱和ip的映射關係,新增一個本地解決方案,鍵入如下內容,
192.168.78.141 www.12345.com192.168.78.141 register.12345.com192.168.78.141 login.12345.com
如:
註:修改window的hosts檔案:(C:\Windows\System32\drivers\etc)
基於 Nginx 網域名稱的虛擬機器主機配置,修改內容如:
server { listen 80; server_name www.12345.com; location / { root html; index index.html index.htm; } } server { listen 80; server_name register.12345.com; location / { root html-81; index index.html index.htm; } } server { listen 80; server_name login.12345.com; location / { root html-82; index index.html index.htm; } }
如所示:
修改設定檔後,需要 nginx 重新載入設定檔。
測試 www.12345.com,如:
測試 register.12345.com,如:
測試 login.12345.com,如: