zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    此时的我,就像一个炸药包...
    我焦躁,并不只是心里承受,还是因为我上面担着。
    我们应该顶住压力
    git初识后的一些问题
    我近期应该找个机会休整一下了
    权限管理设计的一些感悟
    一个无用的功能
    关于IE8与FireFox中,button内字体总是有一个不垂直居中的问题
    Android之EditText文本框监听事件
    Android流量统计TrafficStats类的使用
  • 原文地址:https://www.cnblogs.com/pyrene/p/6493341.html
Copyright © 2011-2022 走看看