设为首页 收藏本站
查看: 2126|回复: 6

[经验分享] nginx 的虚拟主机配置

[复制链接]

尚未签到

发表于 2013-4-18 09:11:11 | 显示全部楼层 |阅读模式
什么是虚拟主机

        虚拟主机使用的是特殊的软硬件技术,它把一台运行在因特网上的服务器主机分成一台台“虚拟”的主机,每台虚拟主机都可以是一个独立的网站.可以具有独立的域名,具有完整的Internet服务器功能(WWW, FTP, Email等),同一台主机上的虚拟主机之间是完全独立的。

        从网站访问者来看,每一台虚拟主机和一台独立的主机完全一样。

        利用虚拟主机,不用为每个要运行的网站提供一台单独的Nginx服务器或单独运行一组Nginx进程.虚拟主机提供了在同一台服务器、同一组Nginx进程上运行多个网站的功能.

        在Nginx配置文件(nginx.conf)中,一个最简化的虚拟主机配置如下所示:

http
{
        server
        {
                listen        80 default;
                server_name        _ * ;
                access_log        logs/default.access.log combined;
                location / {
                        index index.html;
                        root  /data0/htdocs/htdocs;
                }
        }
}


同Apache 一样,nginx 也支持基于端口,基于IP,基于域名的3种虚拟主机


基于IP 的虚拟主机
         基于IP的虚拟主机,可以是一台服务器,多个网卡,每个网卡绑定不同的IP ;也可以是利用同一个网卡开启子接口,在子接口上绑定不同IP,具体方法如下:

原本机器的网卡信息:
[iyunv@vhost1 ~]# ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:f0:34:46 brd ff:ff:ff:ff:ff:ff
    inet 192.168.30.110/24 brd 192.168.30.255 scope global eth0
    inet6 fe80::20c:29ff:fef0:3446/64 scope link
       valid_lft forever preferred_lft forever


现在为eth0设置两个子接口eth0:1  eth0:2
[iyunv@vhost1 ~]# ifconfig eth0:1 192.168.30.106 netmask 255.255.255.0 up
[iyunv@vhost1 ~]# ifconfig eth0:2 192.168.30.107 netmask 255.255.255.0 up


[iyunv@vhost1 ~]# ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:f0:34:46 brd ff:ff:ff:ff:ff:ff
    inet 192.168.30.110/24 brd 192.168.30.255 scope global eth0
    inet 192.168.30.106/24 brd 192.168.30.255 scope global secondary eth0:1
    inet 192.168.30.107/24 brd 192.168.30.255 scope global secondary eth0:2
    inet6 fe80::20c:29ff:fef0:3446/64 scope link
       valid_lft forever preferred_lft forever


测试联通性:
[iyunv@vhost1 ~]# ping 192.168.30.107
PING 192.168.30.107 (192.168.30.107) 56(84) bytes of data.
64 bytes from 192.168.30.107: icmp_seq=1 ttl=64 time=0.046 ms
64 bytes from 192.168.30.107: icmp_seq=2 ttl=64 time=0.041 ms
.....
能ping 通说明配置没有问题

注意:通过这个方法配置的子接口只是在当前登录有效,退出再次登入则失效
如果想要开机启动,可以把这几条命令添加到/etc/rc.local 文件中,让系统开机时自动运行:
[iyunv@vhost1 ~]# vim /etc/rc.local
/sbin/ifconfig eth0:1 192.168.30.106 netmask 255.255.255.0 up
/sbin/route add -host 192.168.30.106 dev eth0:1
/sbin/ifconfig eth0:2 192.168.30.107 netmask 255.255.255.0 up

/sbin/route add -host 192.168.30.107 dev eth0:2

下面是基于IP的虚拟主机配置:
[iyunv@vhost1 ~]# mkdir /usr/local/nginx/html/vser1
[iyunv@vhost1 ~]# mkdir /usr/local/nginx/html/vser2


[iyunv@vhost1 ~]# echo "this is vistual server1" > /usr/local/nginx/html/vser1/index.html
[iyunv@vhost1 ~]# echo "this is vistual server2" > /usr/local/nginx/html/vser2/index.html
http
{

    server
    {
        listen 192.168.30.106:80;                  // 监听的IP以及端口号
        server_name     192.168.30.106;            // 服务器名
        access_log      logs/vser1.access.log combined;    // 日志存放位置以及格式
        location /
        {
                index index.html index.htm;                    // 定义默认索引文件
                root /usr/local/nginx/html/vser1;            // 定义虚拟主机的web根目录
        }
    }

    server
    {
        listen 192.168.30.107:80;
        server_name     192.168.30.107;
        access_log      logs/vser2.access.log combined;
        location /
        {
                index index.html index.htm;
                root /usr/local/nginx/html/vser2;
        }
    }

}
从上面配置可以看出,一段server{...} 就是一个虚拟主机。监听的IP和端口也可以不写IP地址,只写端口号,把它配置成"listen 80",则表示监听该服务器上所有IP的80端口,可通过server_name 区分不同的虚拟主机

配置完成后重启nginx
[iyunv@vhost1 ~]# ps aux|grep nginx
root      1924  0.0  0.7  57400  1712 ?        Ss   16:39   0:00 nginx: master process /usr/local/nginx/sbin/nginx
www     1925  0.0  1.1  57808  2636 ?        S    16:39   0:00 nginx: worker process      
root      1946  0.0  0.3 103232   864 pts/0    S+   16:42   0:00 grep nginx

[iyunv@vhost1 ~]# kill -HUP 1924


打开浏览器测试效果:
162344800.jpg

162350443.jpg




基于域名的虚拟主机
        基于域名的虚拟主机是最常见的一种虚拟主机。只需要配置好DNS服务器,将每个主机名映射到正确的IP地址,然后配置Nginx服务器,令其识别不同的主机名即可。这种虚拟主机技术,使得很多虚拟主机可以共享同一个IP,有效的解决IP不够的问题,推荐使用基于域名的虚拟主机

        下面的配置是基于域名的虚拟主机,在下面的示例中,配置了2个虚拟主机,第一个表示所有对域名vhost1.domain.com的访问都由它来处理;第二个表示对域名www.domain.com、domain.com,以及vhost01.domain.com之外的所有*.domain.com 二级域名的访问都由它来处理。


[iyunv@vhost1 nginx]# vim /etc/hosts
192.168.30.110          www.vhost001.com
192.168.30.110         [url=file:///C:/Documents%20and%20Settings/Administrator/Local%20Settings/Application%20Data/youdao/ynote/editor/web/ www.vhost002.com]www.vhost002.com[/url]


注意:如果是在本机上测试的,则只需要设置本机的hosts文件,如果是在物理机上做测试,那么还需要为物理机的hosts文件也添加以下两行,这样物理机才能通过域名找到主机
C:\WINDOWS\system32\drivers\etc\hosts
192.168.30.110        www.vhost001.com
192.168.30.110        www.vhost002.com



nginx的配置如下:
    server{
        listen          80;
        server_name     www.vhost001.com;
        location / {
                index index.html index.htm;
                root /usr/local/nginx/html/vhost001;
                }
        }
    server{
        listen          80;
        server_name     www.vhost002.com;
        location / {
                index index.html index.htm;
                root /usr/local/nginx/html/vhost002;
                }
        }


配置完成后重启nginx服务
[iyunv@server nginx]# ps aux |grep nginx
root      3581  0.0  0.7  57400  1740 ?        Ss   07:37   0:00 nginx: master process /usr/local/nginx/sbin/nginx
www       3582  0.0  1.1  57824  2664 ?        S    07:37   0:00 nginx: worker process      
root      3607  0.0  0.3 103232   864 pts/0    S+   08:01   0:00 grep nginx


[iyunv@server nginx]# kill -HUP 3581

[iyunv@server ~]# mkdir /usr/local/nginx/html/vhost001
[iyunv@server ~]# mkdir /usr/local/nginx/html/vhost002
[iyunv@server ~]# echo "this is vhost001" > /usr/local/nginx/html/vhost001
[iyunv@server ~]# echo "this is vhost002" > /usr/local/nginx/html/vhost002

打开浏览器,测试效果:
162311695.jpg
162323474.jpg


注意:如果虚拟主机较多,为了简化nginx.conf,可以将虚拟主机的配置写在其他地方

[iyunv@server conf]# mkdir /usr/local/nginx/html/vhost
[iyunv@server conf]# vim /usr/local/nginx/html/vhost/index.php
<?php phpinfo(); ?>

[iyunv@server conf]# chown -R www.www /usr/local/nginx/html/vhost/
[iyunv@server conf]# chmod -R 755 /usr/local/nginx/html/vhost/


nginx.conf 里面的配置就不列出来了,就是不需要配置server{}
在http{}里面添加: include vhost/*.conf;

创建虚拟主机配置
[iyunv@server conf]# mkdir vhost
[iyunv@server vhost]# vim vhost01.conf

server{
        listen  80;
        server_name    demo.vhost001.com;        //设置虚拟主机域名
        location / {
                root    /usr/local/nginx/html/vhost;       // 指定虚拟主机目录
                index   index.html index.htm index.php;
                }

        error_page      404 403 402 502 500 503 504  /404.html;
        location = /404.html {
                root html;
                }

        location ~ \.php$ {
               root           html;
               fastcgi_pass   127.0.0.1:9000;
               fastcgi_index  index.php;
               fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
               include        fastcgi_params;
                         }
}


检查nginx.conf 配置是否有问题,若无问题则可以重新加载配置测试
[iyunv@server conf]# /usr/local/nginx/sbin/nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful



浏览器测试:http://demo.vhost001.com
162249273.jpg






运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-5276-1-1.html 上篇帖子: 搭建lemp环境(eAccelerator+mysql+nginx+php) 下篇帖子: nginx 自定义error页面 404 403 502 虚拟主机

尚未签到

发表于 2013-4-18 09:58:57 | 显示全部楼层
写的真的很不错

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

发表于 2013-5-17 22:37:42 | 显示全部楼层
爱护环境,人人有病。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

尚未签到

发表于 2013-5-20 10:36:54 | 显示全部楼层
所有刻骨铭心的爱都灵魂游离于床上的瞬间!

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

尚未签到

发表于 2013-5-22 22:18:48 | 显示全部楼层
找不到恐龙,就用蜥蜴顶

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

尚未签到

发表于 2013-5-27 21:00:42 | 显示全部楼层
谢谢楼主,共同发展

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

尚未签到

发表于 2013-6-1 01:32:52 | 显示全部楼层
这是什么东东啊

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表