Nginx技术深度剖析(2)

简介:

Nginx虚拟主机配置实战:

虚拟主机的概念:

所谓虚拟主机就是在Web主机里的一个独立的网站站点,这个站点对应独立的域名(也可能是IP地址或端口),具有独立的程序及资源目录,可以独立的对外提供服务供用户访问。

这个独立的站点在配置里是由一定格式的标签段标记,对于Apache软件来说,一个独立的虚拟主机的标签段通常包含在<VirtualHost></VirtualHost>内,而nginx软件则使用一个server{}标签标识一个虚拟主机。

(1)基于域名的虚拟主机

是企业中应用最广泛的主机类型。

(2)基于IP的虚拟主机

一般不同的业务有需要使用多个IP地址的场景都会在均衡器上进行VIP上绑定,而不是Web上绑定IP区分不同的虚拟机。

(3)基于端口的虚拟主机

此类虚拟主机对应企业应用,主要为公司内部的网站提供服务。

---------------------------------------------------------------------------------------------------------------

配置基于域名的Web服务:

---------------------------------------------------------------------------------------------------------------

(1)修改配置文件:

vim /application/nginx/conf/nginx.conf

worker_processes  1;

events {

    worker_connections  1024;

}

http {

    include       mime.types;

    default_type  application/octet-stream;

    sendfile        on;

    keepalive_timeout  65;

    server {

        listen       80;

        server_name  www.smartbro.com;        #设置域名

        location / {

            root   html/www;                  #修改站点的目录

            index  index.html index.htm;

        }

}

}

:wq

(2)创建域名对应的站点目录及内容

mkdir /application/nginx/html/www              #创建站点目录

echo 'Welcome to www.smartbro.com!' > /application/nginx/html/www/index.html      #追加文本到主页文件

/application/nginx/sbin/nginx -t            #检查配置文件的语法错误

nginx: the configuration file /application/nginx-1.13.4//conf/nginx.conf syntax is ok

nginx: configuration file /application/nginx-1.13.4//conf/nginx.conf test is successful

/application/nginx/sbin/nginx -s reload      #平滑加载Nginx配置文件

netstat -tunlap | grep 80       #查看端口号

tcp        0      0 0.0.0.0:80                  0.0.0.0:*                   LISTEN      37232/nginx

ps -aux | grep nginx            #查看进程

root      37232  0.0  0.1  44764  1784 ?        Ss   07:47   0:00 nginx: master process /application/nginx/sbin/nginx

nginx     39418  0.0  0.1  45220  1808 ?        S    14:10   0:00 nginx: worker process

root      39422  0.0  0.0 103308  852 pts/0     S+   14:12   0:00 grep nginx

(3)修改本地hosts文件:

vim /etc/hosts

192.168.10.3 www.smartbro.com

:wq

访问测试:

curl http://www.smartbro.com     #使用浏览器测试

Welcome to www.smartbro.com!

修改Windows的hosts文件:

路径:%SYSTEMROOT%\System32\drivers\etc\hosts

使用NotePad++打开编辑。

#  192.168.10.3     www.smartbro.com

在Windows命令终端测试:

C:\Users\xvGe>ping www.smartbro.com       #测试域名的连通性

正在 Ping smartbro.com [104.131.163.31] 具有 32 字节的数据:

来自 104.131.163.31 的回复: 字节=32 时间=284ms TTL=51

来自 104.131.163.31 的回复: 字节=32 时间=284ms TTL=51

来自 104.131.163.31 的回复: 字节=32 时间=283ms TTL=51

来自 104.131.163.31 的回复: 字节=32 时间=284ms TTL=51

104.131.163.31 的 Ping 统计信息:

    数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失),

往返行程的估计时间(以毫秒为单位):

    最短 = 283ms,最长 = 284ms,平均 = 283ms

------------------------------------------------------------------------------------------------------------------

配置基于多个域名的Web服务:

------------------------------------------------------------------------------------------------------------------

修改配置文件/application/nginc/conf/nginx.conf:

增加sever区块:

worker_processes  1;

events {

    worker_connections  1024;

}

http {

    include       mime.types;

    default_type  application/octet-stream;

    sendfile        on;

    keepalive_timeout  65;

#网站的服务器区块

    server {

        listen       80;

        server_name  www.smartbro.com;    #定义网址

        location / {

            root   html/www;              #定义网页文件目录

            index  index.html index.htm;

        }

    }

    #论坛网站的服务器区块

    server {

        listen       80;

        server_name  bbs.smartbro.com;    #定义网址

        location / {

            root   html/bbs;              #定义网页文件目录

            index  index.html index.htm;

        }

    }

    #网盘网站的服务器区块

    server {

        listen       80;

        server_name  pan.smartbro.com;    #定义网址

        location / {

            root   html/pan;              #定义网页文件目录

            index  index.html index.htm;

        }

    }


}

/application/nginx/sbin/nginx -t    #检查语法错误

nginx: the configuration file /application/nginx-1.13.4//conf/nginx.conf syntax is ok

nginx: configuration file /application/nginx-1.13.4//conf/nginx.conf test is successful

/application/nginx/sbin/nginx -s reload    #平滑重启Nginx

修改本地hosts文件:

192.168.10.3 www.smartbro.com bbs.smartbro.com pan.smartbro.com

创建网站目录和首页文件:

mkdir /application/nginx/html/bbs

mkdir /application/nginx/html/pan

echo 'Welcome to bbs.smartbro.com' > /application/nginx/html/bbs/index.html

echo 'Welcome to pan.smartbro.com' > /application/nginx/html/pan/index.html

使用浏览器进行测试:

curl http://bbs.smartbro.com

Welcome to bbs.smartbro.com

curl http://pan.smartbro.com

Welcome to pan.smartbro.com

-----------------------------------------------------------------------------------------

配置基于端口的主机配置实战:

-----------------------------------------------------------------------------------------

修改Nginx主配置文件:

worker_processes  1;

events {

    worker_connections  1024;

}

http {

    include       mime.types;

    default_type  application/octet-stream;

    sendfile        on;

    keepalive_timeout  65;

    server {

        listen       80;     #默认的端口号

        server_name  www.smartbro.com;

        location / {

            root   html/www;

            index  index.html index.htm;

        }

    }


    server {

        listen       8080;   #修改端口号

        server_name  www.smartbro.com;

        location / {

            root   html/bbs;

            index  index.html index.htm;

        }

    }


    server {

        listen       8090;   #修改端口号

        server_name  www.smartbro.com;

        location / {

            root   html/pan;

            index  index.html index.htm;

        }

    }


}

/application/nginx/sbin/nginx -t   #检查语法配置

nginx: the configuration file /application/nginx-1.13.4//conf/nginx.conf syntax is ok

nginx: configuration file /application/nginx-1.13.4//conf/nginx.conf test is successful

/application/nginx/sbin/nginx -s reload   #平滑重启Nginx

测试访问:

curl http://www.smartbro.com

Welcome to www.smartbro.com!

curl http://www.smartbro.com:8080

Welcome to bbs.smartbro.com

curl http://www.smartbro.com:8090

Welcome to pan.smartbro.com

------------------------------------------------------------------------------------------------

配置基于IP的虚拟主机实战:

------------------------------------------------------------------------------------------------

(1)在服务器增加多个网卡:

poweroff    #关机

单击[编辑虚拟机设置]--->[添加]--->[网络适配器]--->[下一步]--->[自定义]--->[VMnet2(仅主机模式)]--->[完成]

单击[编辑虚拟机设置]--->[添加]--->[网络适配器]--->[下一步]--->[自定义]--->[VMnet3(仅主机模式)]--->[完成]

开启虚拟机

现在总共有3张网卡:

eth0:192.168.10.3

eth1:192.168.20.3

eth2:192.168.30.3

rm -rf /etc/udev/rules.d/*   #删除udev规则

vim /etc/sysconfig/network-scripts/ifcfg-eth0   #修改网卡配置

DEVICE=eth0

HWADDR=00:0C:29:1C:30:C8

TYPE=Ethernet

ONBOOT=yes

BOOTPROTO=none

IPADDR=192.168.10.3

PREFIX=24

:wq     #保存退出

cp /etc/sysconfig/network-scripts/ifcfg-eth0 /etc/sysconfig/network-scripts/ifcfg-eth1   #复制并改名网卡配置文件

cp /etc/sysconfig/network-scripts/ifcfg-eth0 /etc/sysconfig/network-scripts/ifcfg-eth2

vim /etc/sysconfig/network-scripts/ifcfg-eth1   #修改网卡地址

DEVICE=eth1    #更改网卡的名字

HWADDR=00:0C:29:1C:30:D2      #更改网卡的MAC地址

TYPE=Ethernet

ONBOOT=yes

BOOTPROTO=none

IPADDR=192.168.20.3     #更改网卡的IP地址

PREFIX=24

:wq     #保存退出

vim /etc/sysconfig/network-scripts/ifcfg-eth1   #修改网卡地址

DEVICE=eth2    #更改网卡的名字

HWADDR=00:0C:29:1C:30:DC      #更改网卡的MAC地址

TYPE=Ethernet

ONBOOT=yes

BOOTPROTO=none

IPADDR=192.168.30.3     #更改网卡的IP地址

PREFIX=24

:wq     #保存退出

reboot      #重启

ifconfig -a    #查看所有网卡信息

eth0      Link encap:Ethernet  HWaddr 00:0C:29:1C:30:C8

          inet addr:192.168.10.3  Bcast:192.168.10.255  Mask:255.255.255.0      #网卡的IP地址已经生效

          inet6 addr: fe80::20c:29ff:fe1c:30c8/64 Scope:Link

          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

          RX packets:51 errors:0 dropped:0 overruns:0 frame:0

          TX packets:46 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:1000

          RX bytes:5998 (5.8 KiB)  TX bytes:6909 (6.7 KiB)


eth1      Link encap:Ethernet  HWaddr 00:0C:29:1C:30:D2

          inet addr:192.168.20.3  Bcast:192.168.20.255  Mask:255.255.255.0      #网卡的IP地址已经生效

          inet6 addr: fe80::20c:29ff:fe1c:30d2/64 Scope:Link

          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

          RX packets:3 errors:0 dropped:0 overruns:0 frame:0

          TX packets:12 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:1000

          RX bytes:276 (276.0 b)  TX bytes:828 (828.0 b)


eth2      Link encap:Ethernet  HWaddr 00:0C:29:1C:30:DC

          inet addr:192.168.30.3  Bcast:192.168.30.255  Mask:255.255.255.0      #网卡的IP地址已经生效

          inet6 addr: fe80::20c:29ff:fe1c:30dc/64 Scope:Link

          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

          RX packets:3 errors:0 dropped:0 overruns:0 frame:0

          TX packets:12 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:1000

          RX bytes:276 (276.0 b)  TX bytes:828 (828.0 b)


lo        Link encap:Local Loopback

          inet addr:127.0.0.1  Mask:255.0.0.0

          inet6 addr: ::1/128 Scope:Host

          UP LOOPBACK RUNNING  MTU:65536  Metric:1

          RX packets:228 errors:0 dropped:0 overruns:0 frame:0

          TX packets:228 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:0

          RX bytes:14900 (14.5 KiB)  TX bytes:14900 (14.5 KiB)

修改Nginx的主配置文件:

worker_processes  1;

events {

    worker_connections  1024;

}

http {

    include       mime.types;

    default_type  application/octet-stream;

    sendfile        on;

    keepalive_timeout  65;

    server {

        listen       192.168.30.3;    #设置监听的IP地址,可以后面加上设定的端口号,例如192.168.10.3:80

        server_name  www.smartbro.com;

        location / {

            root   html/www;

            index  index.html index.htm;

        }

    }


    server {

        listen       192.168.20.3;    #设置监听IP地址

        server_name  bbs.smartbro.com;

        location / {

            root   html/bbs;

            index  index.html index.htm;

        }

    }


    server {

        listen       192.168.10.3;    #设置监听IP地址

        server_name  pan.smartbro.com;

        location / {

            root   html/pan;

            index  index.html index.htm;

        }

    }


}

/application/nginx/sbin/nginx -t

nginx: the configuration file /application/nginx-1.13.4//conf/nginx.conf syntax is ok

nginx: configuration file /application/nginx-1.13.4//conf/nginx.conf test is successful

启动Nginx:

/application/nginx/sbin/nginx

curl http://192.168.10.3

Welcome to pan.smartbro.com

curl http://192.168.20.3

Welcome to bbs.smartbro.com

curl http://192.168.30.3

Welcome to www.smartbro.com!

----------------------------------------------------------------------------------------

企业场景中重启Nginx后的检测策略:

----------------------------------------------------------------------------------------

在企业运维实战场景中,每一个配置操作处理完毕后都应该进行快速有效的检查。

启动Nginx的时候会通过脚本获取header信息或模拟用户访问指定的URL来自动检查Nginx的启动是否正常。

最大限度的保证服务重启后可以迅速访问网站。

如果有问题就立刻使用上一版的备份文件,使得影响用户的时间最短。



 本文转自 棋帅小七 51CTO博客,原文链接:http://blog.51cto.com/xvjunjie/1955228

相关实践学习
基于函数计算快速搭建Hexo博客系统
本场景介绍如何使用阿里云函数计算服务命令行工具快速搭建一个Hexo博客。
相关文章
|
2月前
|
缓存 前端开发 JavaScript
tomcat核心技术+Nginx性能调优技术
而Tomcat的基本配置,每个配置项也基本上对应了Tomcat的组件结构,如果要用一张图来形象展现一下Tomcat组成的话
37 1
|
3月前
|
缓存 负载均衡 应用服务中间件
高性能网络编程技术 Nginx 的概念与实践
Nginx 是一款高性能、轻量级的Web服务器和反向代理服务器,它在网络编程技术领域中被广泛应用。本文将详细介绍Nginx的概念和实践,包括其核心原理、功能特点、优势和应用场景等方面。同时,还将深入探讨如何使用Nginx进行高性能网络编程,结合实际案例进行分析。
|
3月前
|
缓存 负载均衡 应用服务中间件
高性能网络编程技术 Nginx 的概念与实践
在当今互联网时代,高性能网络编程技术越来越受到重视。Nginx 作为一款高性能、高可靠性的 Web 服务器,拥有广泛的应用和优异的性能表现。本文将介绍 Nginx 的基本概念、架构以及实践技巧,帮助读者更好地理解和使用这一工具。
|
4月前
|
Java 应用服务中间件 数据库连接
太厉害!Redis+Nginx+设计模式+Spring全家桶+Dubbo技术精选合集
最近花了很长的时间去搜罗Java核心技术好文,我把每个Java核心技术的优选文章都整理成了一个又一个的文档。昨天也是终于全部整理好了,今天就把这些东西分享给老铁们,也能为老铁们省去不少麻烦,想学什么技能了,遇到哪方面的问题了 直接打开文档学一学就好了。不多bb了,直接上干货!
|
8月前
|
Java 应用服务中间件 数据库连接
太厉害!Redis+Nginx+设计模式+Spring全家桶+Dubbo技术精选合集
最近花了很长的时间去搜罗Java核心技术好文,我把每个Java核心技术的优选文章都整理成了一个又一个的文档。昨天也是终于全部整理好了,今天就把这些东西分享给老铁们,也能为老铁们省去不少麻烦,想学什么技能了,遇到哪方面的问题了 直接打开文档学一学就好了。不多bb了,直接上干货!
BATMJ技术实战之多线程+JVM+Nginx+Redis+SpringBoot(书籍赠送)
感谢各位的关注!!!!请看下面这就是小编免费赠送给大家和粉丝的福利哦 Java多线程编程核心实战(文档) 深入理解Java虚拟机:JVM实战(文档) 深入浅出Nginx实战(文档) Redis核心实战(文档) 深入浅出SpringBoot以及SpringBoot2.x(文档) 由于细节内容实在太多啦,所以只把部分知识点截图出来粗略的介绍,每个小节点里面都有更细化的内容!
|
存储 缓存 运维
技术应用:Nginx运维优化最佳实践(二)
Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点(俄文:Рамблер)开发的,第一个公开版本0.1.0发布于2004年10月4日。其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。2011年6月1日,nginx 1.0.4发布。
技术应用:Nginx运维优化最佳实践(二)
|
缓存 负载均衡 应用服务中间件
万字详解Nginx技术
Nginx 是一个很强大的高性能 Web 和反向代理服务,它具有很多非常优越的特性:在连接高并发的情况下,Nginx 是 Apache 服务不错的替代品. 这里为你揭开它的神秘面纱......
万字详解Nginx技术
|
缓存 负载均衡 应用服务中间件
Nginx - Web 缓存技术简述
Nginx - Web 缓存技术简述
285 0
|
弹性计算 应用服务中间件 Linux
基于ECS弹性服务,Dokcer容器技术部署Nginx服务
如何基于ECS弹性服务,Dokcer容器技术部署Nginx服务?
504 0
基于ECS弹性服务,Dokcer容器技术部署Nginx服务