首頁 >後端開發 >php教程 >Centos7.2下使用Nginx實作虛擬主機

Centos7.2下使用Nginx實作虛擬主機

小云云
小云云原創
2018-03-05 11:33:474458瀏覽

一、前言

首先需要確保在你的Linux 系統中已經正確安裝Nginx ,當然如果沒有安裝Nginx 請參考

系統環境:
Linux 環境: centos-7.2
Nginx 環境: nginx-1.9.9

#二、關於Nginx
Nginx是一款高效能的http 伺服器/反向代理伺服器及電子郵件(IMAP/POP3)代理伺服器。由俄羅斯的程式設計師Igor Sysoev所開發,官方測試nginx能夠支撐5萬並發鏈接,並且cpu、內存等資源消耗卻非常低,運行非常穩定。開源、免費。


三、使用 Nginx 能做什麼?
1、http伺服器:Nginx是一個http服務可以獨立提供http服務。可以做網頁靜態伺服器。
2、虛擬主機:可以實現在一台伺服器虛擬出多個網站。例如個人網站使用的虛擬主機。
3、反向代理/負載平衡:當網站的訪問量達到一定程度後,單一伺服器無法滿足使用者的請求時,需要用多台伺服器叢集可以使用nginx做反向代理。而多台伺服器可以平均分擔負載,不會因為某台伺服器負載高宕機而某台伺服器閒置的情況。


四、使用Nginx 實作虛擬主機
在這裡我們需要知道,為什麼需要建立虛擬主機,在實際生產環境中,我們的業務都是透過公網存取的,
我在搭建雲端伺服器時,一個雲端伺服器對應一個公網IP ,所以公網IP 對於一般的公司是非常稀缺的資源,
對於一些大型的公司,如:BAT,可能就無所謂了。
所以在這裡使用 Nginx 實現虛擬主機,可以實現在同一台服務運行多個網站,而且網站之間互相不干擾。


同一個伺服器可能有一個ip,網站需要使用80端口,但是網站的網域不同。
區分不同的網站有三種方式:

1、http服務
2、實作虛擬機器
1) 基於ip的虛擬機器
2) 基於連接埠的虛擬機器
3) 基於網域的虛擬機器
3、反向代理、負載平衡

五、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:1
DEVICE=ens33:1
IPADDR=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.com
192.168.78.141 register.12345.com
192.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,如下图:


相关推荐:

win10 apache配置虚拟主机后localhost无法使用

详解Linux虚拟主机相关问题

关于php之Apache配置虚拟主机

以上是Centos7.2下使用Nginx實作虛擬主機的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn