nginx 搭建虚拟主机
一、排错三部曲
第一步在客户端上ping服务端ip ping 10.0.0.8
第二部在客户端上telnet服务器端IP、端口 telnet 10.0.0.8
第三部在客户端使用wget命令检测 wget 10.0.0.8 模拟用户访问,排除http服务自身问题
二、部署简单的web站点
1)进入配置文件目录
[root@oldboy conf]# cd /application/nginx
[root@oldboy nginx]# cd conf/
2)把备份的配置文件传递给配置文件
[root@oldboy conf]# egrep -v "^$|#" nginx.conf.default >nginx.conf
3)修改域名
1 worker_processes 1; 2 events { 3 worker_connections 1024; 4 } 5 http { 6 include mime.types; 7 default_type application/octet-stream; 8 sendfile on; 9 keepalive_timeout 65; 10 server { 11 listen 80; 12 server_name http://www.cnblogs.com/pyrene/; --》这里修改域名 13 location / { 14 root html; 15 index index.html index.htm; 16 } 17 error_page 500 502 503 504 /50x.html; 18 location = /50x.html { 19 root html; 20 } 21 } 22 }
4)检查[root@oldboy conf]# /application/nginx/sbin/nginx -t
5)优雅重启 [root@oldboy conf]# /application/nginx/sbin/nginx -s reload
6)修改主页 [root@oldboy nginx]# cd /application/nginx/html/
7)修改主页内容
<html> <head><title>pyrene</title></head> <body> 欢迎来到pyrene的博客! <a href="http://www.cnblogs.com/pyrene/" target=_blank><img src="bingbing.jpg">冰冰</a> </body> </html> 这里的bingbing.jpg图片要rz -y上传到html目录里面
8)在浏览器中输入10.0.0.8就可以显示
9)在window里面设置域名解析 win+R 输入drivers --》打开etc文件夹,找到hosts 输入 域名解析 10.0.0.8 http://www.cnblogs.co
10)在cmd中输入www.cnblogs.co 如果返回的是10.0.0.8的返回信息,然后浏览器中输入www.cnblogs.co就能显示网页
三、nginx模块
四、nginx目录结构和配置参数详细介绍
1 [root@A nginx]# tree 2 . 3 ├── client_body_temp 4 ├── conf 5 │ ├── fastcgi.conf 6 │ ├── fastcgi.conf.default 7 │ ├── fastcgi_params 8 │ ├── fastcgi_params.default 9 │ ├── koi-utf 10 │ ├── koi-win 11 │ ├── mime.types 媒体类型 12 │ ├── mime.types.default 13 │ ├── nginx.conf 14 │ ├── nginx.conf.default 15 │ ├── scgi_params 16 │ ├── scgi_params.default 17 │ ├── uwsgi_params 18 │ ├── uwsgi_params.default 19 │ └── win-utf 20 ├── fastcgi_temp 21 ├── html 22 │ ├── 50x.html 23 │ └── index.html 24 ├── logs 日志 25 │ ├── access.log 访问日志(可以记录客户从哪里访问的,用的什么浏览器,访问多久,等等) 26 │ ├── error.log 错误日志 27 │ └── nginx.pid 28 ├── proxy_temp 29 ├── sbin 30 │ └── nginx 31 ├── scgi_temp 32 └── uwsgi_temp
五、nginx主配置文件
所有的标签都在http标签内
nginx最大并发数 是 第6行 worker数 ×1024 ,调节worker数量在第一行,一般情况下数量和核心数相当
上面一个server标签就是一个虚拟主机,server_name 域名 18-21是所有默认请求就在location这边访问
所有等号请求在22-24好区域
22-24是优先处理的,之后处理18-21默认请求
相当于if判断,如果有location先匹配,也有多个
六、参数介绍
worker_processes 1; #worker进程的数量 一般和cpu的数量相同的最好
events { # 模型
worker_connections 1024; # 表示一个worker最大服务的用户数量 epoll模型在这里配置
}
http { #标签
include mime.types; #包含
default_type application/octet-stream; #媒体类型
sendfile on; #开启搞笑传输模式
keepalive_timeout 65; #超时时间
server { #对应一个网站 多个网站多个
listen 80; #监听端口
server_name www.cnblogs.com/pyrene/; #网站域名
location / { #默认的采用这个
root html; #站点目录
index index.html index.htm; #首页文件
}
error_page 500 502 503 504 /50x.html; #优雅显示内容
location = /50x.html {
root html; #如果显示上面的就去这里面找
}
}
}
七、虚拟主机是什么
所谓的虚拟主机,在web服务里面就是一个独立的网站站点,这个站点对应独立的域名(也就是ip或者端口)具有独立的程序及资源目录,可以独立的对提供服务供用户访问
这个独立的站点在配置里是一定格式的标签段标记,对于apache软件来数,一个虚拟主机标签段通常被包含在<VirtuaHost></VirtuaHost>内部,而Nginx软件则使用一个server{}标签来标示一个虚拟主机,一个web服务里可以有多个虚拟主机标签对,即同时可以支持多个虚拟主机站点
八、虚拟主机类型
1、 基于域名的虚拟主机通过域名来区分虚拟主机
外部网站
2、 基于端口的虚拟主机
内部网站或者网站后台
3、基于ip的虚拟主机
九、基于域名创建虚拟主机
1、cp nginx.conf nginx.conf.pyrene.20160513V1 这里修改要带上用户 时间 版本
2、修改配置文件,删除掉error_page
1 [root@oldboy conf]# vim nginx.conf 2 worker_processes 1; 3 events { 4 worker_connections 1024; 5 } 6 http { 7 include mime.types; 8 default_type application/octet-stream; 9 sendfile on; 10 keepalive_timeout 65; 11 server { 12 listen 80; 13 server_name www.cnblogs.com/pyrene/; 14 location / { 15 root html/www; 16 index index.html index.htm; 17 } 18 } 19 server { 20 listen 80; 21 server_name bbs.cnblogs.com/pyrene/; 22 location / { 23 root html/bbs; 24 index index.html index.htm; 25 } 26 } 27 }
3、创建站点目录
[root@A conf]# mkdir ../html/{www,bbs} -p
[root@A conf]# tree ../html/
../html/
├── 50x.html
├── bbs
├── index.html
└── www
4、在两个目录里面生成首页文件
[root@A conf]# echo "www.etiantian.org www.cnblogs.com/pyrene/" >../html/www/index.html #把域名放到首页文件
[root@A conf]# echo " bbs.cnblogs.com/pyrene/" >../html/bbs/index.html
[root@A conf]# cat ../html/{www,bbs}/index.html →检查首页是否生成域名
www.cnblogs.com/pyrene/
bbs.cnblogs.com/pyrene/
5、因为修改了配置文件所以要重启这个服务,但是重启之前要检查是否正确用-t这个参数
首先检查是否正确 /application/nginx/sbin/nginx -t
然后再重启 /application/nginx/sbin/nginx -s 加载 reload 重启,如果reload不行那么就直接stop,然后再启动
6、(解析非常重要)因为没有域名,所以要自己创建在本机测试 vim /etc/hosts 10.0.0.8 www.cnblogs.com/pyrene/ bbs.cnblogs.com/pyrene/
7、查看是否连接ok ping www.cnblogs.com/pyrene/
8、查看访问是否成功
[root@A conf]# curl www.cnblogs.com/pyrene/
www.cnblogs.com/pyrene/
windows下的测试
上面6和7 是在linux本机上面测试,下面是在windows机器上面测试
1、Win+R 输入drivers找etc打开hosts 这里是邮件点击获得管理员权限
2、输入10.0.0.8 www.cnblogs.com/pyrene/ bbs.cnblogs.com/pyrene/
3、在浏览器中输入域名地址ok
原理:
当我们输入网页,在hosts文件里面会解析成IP,这是发起了一条tcp链接,之后建立http连接,http连接里面有请求头,请求头里面对应一个主机名,当请求到达服务器的时候,会读请求头,,如果没有请求头(直接用IP访问)就传递给用户第一个虚拟主机,所以如果只用ip访问就会发给用户第一个虚拟主机,定位到虚拟主机读站点目录,读首页文件,入股没有首页文件是403
十、增加一个博客首页
1、 复制一个虚拟主机 2、在虚拟主机里面修改域名和站点目录 server { listen 80; server_name www.cnblogs.com/pyrene/; location / { root html/blog; index index.html index.htm; } } 3、创建站点目录,并且把域名放到网站首页 [root@A conf]# mkdir ../html/blog [root@A conf]# echo www.cnblogs.com/pyrene/ >../html/blog/index.html 4、检查,然后重启 [root@A conf]# /application/nginx/sbin/nginx -t nginx: the configuration file /application/nginx-1.6.3/conf/nginx.conf syntax is ok nginx: configuration file /application/nginx-1.6.3/conf/nginx.conf test is successful [root@A conf]# /application/nginx/sbin/nginx -s reload 5、把域名写到/etc/hosts里面 然后查看 [root@A conf]# curl www.cnblogs.com/pyrene/ www.cnblogs.com/pyrene/
补充:
命令:curl
在Linux中curl是一个利用URL规则在命令行下工作的文件传输工具,可以说是一款很强大的http命令行工具。它支持文件的上传和下载,是综合传输工具
十一、基于端口的虚拟主机
偶尔会用,办公OA系统、网站程序的后台、CMS发布后台、MYSQL的web客户端使用特殊端口是基于安全考虑的 1、 备份 首先复制原来的nginx.conf 到新的文件nginx.conf.base-name,之后再修改nginx.conf 2、vim nginx.conf 在虚拟主机中修改端口就可以了 server { listen 8001; server_name www.cnblogs.com/pyrene/ ; location / { root html/www; index index.html index.htm; } } server { listen 8002; server_name bbs.cnblogs.com/pyrene/ ; location / { root html/bbs; index index.html index.htm; } } server { listen 8003; server_name blog.cnblogs.com/pyrene/ ; location / { root html/blog; index index.html index.htm; } 3、检查语法,然后重启 [root@A conf]# ../sbin/nginx -t nginx: the configuration file /application/nginx-1.6.3/conf/nginx.conf syntax is ok nginx: configuration file /application/nginx-1.6.3/conf/nginx.conf test is successful [root@A conf]# ../sbin/nginx -s reload 4、查看端口是否开启 [root@A conf]# netstat -lntup|grep nginx tcp 0 0 0.0.0.0:8001 0.0.0.0:* LISTEN 2412/nginx tcp 0 0 0.0.0.0:8002 0.0.0.0:* LISTEN 2412/nginx tcp 0 0 0.0.0.0:8003 0.0.0.0:* LISTEN 2412/nginx 5、就可以查看了 [root@A conf]# curl www.cnblogs.com/pyrene/:8001 www.cnblogs.com/pyrene/ 总结:基于端口的虚拟主机,和基于域名的虚拟主机主要就是更改一下端口就可以了