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的启动是否正常。

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

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

时间: 2024-11-06 16:18:40

Nginx技术深度剖析(2)的相关文章

Nginx技术深度剖析(1)

(1)Nginx核心模块: Nginx核心模块负责Nginx的全局应用,主要对应用主配置文件的Main区块和Events区块区域,这里有很多Nginx必须的全局参数配置. (2)标准的HTTP功能模块集合: 这些模块虽然不是必须的,但是是都很常用啊.因此会被Nginx自动编译安装到Nginx软件中.不建议擅自改动.除非明确知道要干什么,由什么额外的影响. 在生产环境中,配置调优主要就是根据这些模块进行相应的更改来实现的.通过官方文档可以查看. 企业中常用的Nginx http功能模块: ----

横瓜先生深度剖析QQ空间前端后端技术AJAX与FORM等等

[皇帝]北京-横瓜-7年(601069289)  22:06:34 [元帅]横瓜-PHP教父(601069289)  21:35:29 这里是QQ空间的图片上传方法 是FLASH 我草 [元帅]横瓜-PHP教父(601069289)  21:36:31 竟然不是JS QQ空间用FLASH 图片上传方法 [元帅]横瓜-PHP教父(601069289)  21:37:35 至此,整个QQ空间的技术,已经全部被我破解 @IT柏拉图 [元帅]IT柏拉图(2500875)  21:38:11 你真是天才,

深度剖析:CDN内容分发网络技术原理--转载

1.前言 Internet的高速发展,给人们的工作和生活带来了极大的便利,对Internet的服务品质和访问速度要求越来越高,虽然带宽不断增加,用户数量也在不断增加,受Web服务器的负荷和传输距离等因数的影响,响应速度慢还是经常抱怨和困扰.解决方案就是在网络传输上利用缓存技术使得Web服务数据流能就近访问,是优化网络数据传输非常有效的技术,从而获得高速的体验和品质保证. 网络缓存技术,其目的就是减少网络中冗余数据的重复传输,使之最小化,将广域传输转为本地或就近访问.互联网上传递的内容,大部分为重

Redis开发与运维 (数据库技术丛书) PDF 下载,深度剖析Hadoop HDFS PDF 下载

1.Redis开发与运维 (数据库技术丛书) PDF 下载 2.深度剖析Hadoop HDFS (大数据技术丛书) PDF 下载 关注微信公众号:职业开发者之路,百度云免费 下载 PDF 电子书籍,或直接访问:问风网:askwinds.com请添加链接描述,免费资源下载模块下载,问风@程序员部落,更多资源分享等你获取关注微信公众号:职业开发者之路,?更多免费资源分享 原文地址:http://blog.51cto.com/2058005/2350798

DDOS学习笔记(《破坏之王-DDOS攻击与防范深度剖析》)

最近花了点时间把<破坏之王-DDOS攻击与防范深度剖析>看了一遍,坦白来说,这本书比较浅显,可以说是入门书,当然对于我这种对DDOS一知半解的人来说,也是一本不错的书,起码我学到了一些东西. DDOS是分布式拒绝服务(Distributed Denial of Service, DDOS)的简写,从名字可以看出,其攻击是分布式的,即多台(可能上万台,甚至更多)电脑同时对目标进行攻击,攻击的目的是让目标无法提供服务.从根本上来说,让目标无法提供服务,办法有很多,比如侵入目标服务器,删除关键服务或

深度剖析WordPress主题结构(转)

利用强大的技术,可以把基于wordpress的网站做成各种各样的形式,这除了要求wordpress主题开发人员精通html,PHP,JS,CSS等技术,还需要开发者掌握WordPress主题的框架. Gevin今天结合The anatomy of a WordPress theme这篇文章,和大家一起剖析WordPress主题的结构.原文作者用图文形式,分别从网站外观.页面组成和后台文件三个方面,形象的向大家展示了WordPress的架构,下面Gevin和大家一起分析WordPress是如何架构

《AngularJS深度剖析与最佳实践》简介

由于年末将至,前阵子一直忙于工作的事务,不得已暂停了微信订阅号的更新,我将会在后续的时间里尽快的继续为大家推送更多的博文.毕竟一个人的力量微薄,精力有限,希望大家能理解,仍然能一如既往的关注和支持shuang_lang_shuo[破狼]微信号,同时也欢迎大家的高质量文章的投稿. 在2015年一年时间中,我.雪狼大叔.彭洪伟一起共同编写了<AngularJS深度剖析与最佳实践>这本前端Angular.js框架的进阶书籍.在写作期间也得到很多人的支持,特别是在Angularjs中文社区群中的各位群

Struts(一)struts2.2概述与MVC模式深度剖析

struts2.2概述与MVC模式深度剖析 1.Struts2是由webwork与struts一起组成的.struts1与struts2完全不一样.(处理前段到服务器端的交互,也就是web端) 2.通过基于请求响应( Request-Response)模式的应用Framework, 基本上有如下几个表现逻辑结构组成.– 控制器(Controller) ——控制整个Framework中各个组件的协调工作.– 业务逻辑层(Business Logic) ——对Framework本身来说, 这里仅仅只

libevent源码深度剖析二

libevent源码深度剖析二 --Reactor模式 张亮 前面讲到,整个libevent本身就是一个Reactor,因此本节将专门对Reactor模式进行必要的介绍,并列出libevnet中的几个重要组件和Reactor的对应关系,在后面的章节中可能还会提到本节介绍的基本概念. 1 Reactor的事件处理机制 首先来回想一下普通函数调用的机制:程序调用某函数?函数执行,程序等待?函数将结果和控制权返回给程序?程序继续处理. Reactor释义"反应堆",是一种事件驱动机制.和普通