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目录里面
vim index.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模块

 核心模块Core functionality

 

 四、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/
View Code

补充:

命令: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/

总结:基于端口的虚拟主机,和基于域名的虚拟主机主要就是更改一下端口就可以了
View Code
原文地址:https://www.cnblogs.com/pyrene/p/6493341.html