【Nginx】的深入浅出

1.什么是Nginx
Nginx是一款高性能的HTTP 服务器、反向代理服务器及电子邮件(IMAP/POP3)代理服务器。由俄罗斯的程序设计师Igor Sysoev所开发,官方测试nginx能够支支撑5万并发链接,并且cpu、内存等资源消耗却非常低,运行非常稳定。

2.Nginx的应用场景

  • HTTP服务器
    Nginx是一个http服务器,可以独立提供http服务,可以做网页静态服务器。
  • 虚拟主机
    可以实现在一台服务器虚拟出多个网站,例如个人网站使用的虚拟主机。
  • 反向代理,负载均衡
    当网站的访问量达到一定程度后,单台服务器不能满足用户的请求时,需要用多台服务器集群可以使用Nginx做反向代理。并且多台服务器可以平均分担负载,不会因为某台服务器负载高宕机而某台服务器闲置的情况。

3.Nginx的安装及测试
参考http://blog.csdn.net/qq_35029429/article/details/78847757

4.配置虚拟主机

  • 4.1. 什么是虚拟主机
    虚拟主机是一种特殊的软硬件技术,它可以将网络上的每一台计算机分成多个虚拟主机,每个虚拟主机可以独立对外提供www服务,这样就可以实现一台主机对外提供多个web服务,每个虚拟主机之间是独立的,互不影响的。
    这里写图片描述
    通过nginx可以实现虚拟主机的配置,nginx支持三种类型的虚拟主机配置,1、基于ip的虚拟主机, 2、基于域名的虚拟主机 3、基于端口的虚拟主机

  • 4.2. nginx配置文件的结构

#user  nobody;
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;

    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';

    #access_log  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;

    server {
        listen       80;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            root   html;
            index  index.html index.htm;
        }

        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

        # proxy the PHP scripts to Apache listening on 127.0.0.1:80
        #
        #location ~ \.php$ {
        #    proxy_pass   http://127.0.0.1;
        #}

        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        #location ~ \.php$ {
        #    root           html;
        #    fastcgi_pass   127.0.0.1:9000;
        #    fastcgi_index  index.php;
        #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
        #    include        fastcgi_params;
        #}

        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #
        #location ~ /\.ht {
        #    deny  all;
        #}
    }


    # another virtual host using mix of IP-, name-, and port-based configuration
    #
    #server {
    #    listen       8000;
    #    listen       somename:8080;
    #    server_name  somename  alias  another.alias;

    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}


    # HTTPS server
    #
    #server {
    #    listen       443 ssl;
    #    server_name  localhost;

    #    ssl_certificate      cert.pem;
    #    ssl_certificate_key  cert.key;

    #    ssl_session_cache    shared:SSL:1m;
    #    ssl_session_timeout  5m;

    #    ssl_ciphers  HIGH:!aNULL:!MD5;
    #    ssl_prefer_server_ciphers  on;

    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}
  }

每个server就是一个虚拟主机。

  • 4.3. 基于ip的虚拟主机配置
    Linux操作系统允许添加IP别名,IP别名就是在一块物理网卡上绑定多个lP地址。这样就能够在使用单一网卡的同一个服务器上运行多个基于IP的虚拟主机。

    4.3.1 需求:
    一台nginx服务器绑定两个ip:192.168.101.3、192.168.101.103,访问不同的ip请求不同的html目录,即:
    访问http://192.168.101.3将访问“html3”目录下的html网页
    访问http://192.168.101.103将访问“html103”目录下的html网页
    4.3.2 html目录创建:
    将原来nginx的html目录拷贝两个目录 “html3”和“html103”,为了方便测试需要修改每个目录下的index.html内容使之个性化。
    cd /usr/local/nginx
    cp -r html html3
    cp -r html html103
    这里写图片描述
    4.3.3.绑定多ip
    方法一:
    使用标准的网络配置工具(比如ifconfig和route命令)添加lP别名,当前ip配置情况:
    在eth0网卡再绑定一个ip:192.168.101.103
    这里写图片描述
    /sbin/ifconfig eth0:1 192.168.101.103 broadcast 192.168.101.255 netmask 255.255.255.0 up
    /sbin/route add -host 192.168.101.103 dev eth0:1
    这里写图片描述
    方法二:
    1、将/etc/sysconfig/network-scripts/ifcfg-eth0文件复制一份,命名为ifcfg-eth0:1
    修改其中内容:
    DEVICE=eth0:1
    IPADDR=192.168.25.103
    其他项不用修改
    2、重启系统
    4.3.4.配置虚拟主机
    修改/usr/local/nginx/conf/nginx.conf文件,添加两个虚拟主机,如下:

#user  nobody;
worker_processes  1;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;

    sendfile        on;

    keepalive_timeout  65;
    #配置虚拟主机192.168.101.3
    server {
    #监听的ip和端口,配置192.168.101.3:80
        listen       80;
    #虚拟主机名称这里配置ip地址
        server_name  192.168.101.3;
    #所有的请求都以/开始,所有的请求都可以匹配此location
        location / {
        #使用root指令指定虚拟主机目录即网页存放目录
        #比如访问http://ip/test.html将找到/usr/local/html3/test.html
        #比如访问http://ip/item/test.html将找到/usr/local/html3/item/test.html

            root   /usr/local/nginx/html3;
        #指定欢迎页面,按从左到右顺序查找
            index  index.html index.htm;
        }

    }
    #配置虚拟主机192.168.101.103
    server {
        listen       80;
        server_name  192.168.101.103;

        location / {
            root   /usr/local/nginx/html103;
            index  index.html index.htm;
        }

    }

}

4.3.5.测试
启动nginx,观察端口监听状态:
这里写图片描述
访问http://192.168.101.3
这里写图片描述
访问http://192.168.101.103
这里写图片描述

  • 4.4. 基于端口的虚拟主机

    4.4.1 需求
    nginx对外提供80和8080两个端口监听服务,请求80端口则请求html80目录下的html,请求8080端口则请求html8080目录下的html。
    4.4.2 html目录创建
    将原来nginx的html目录拷贝两个目录 “html80”和“html8080”,为了方便测试需要修改每个目录下的index.html内容使之个性化。
    4.4.3 配置虚拟主机
    修改/usr/local/nginx/conf/nginx.conf文件,添加两个虚拟主机,如下:

#user  nobody;
worker_processes  1;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;

    sendfile        on;

    keepalive_timeout  65;
    #配置虚拟主机
    server {
    #监听的ip和端口,配置80
        listen       80;
    #虚拟主机名称这里配置ip地址
        server_name  192.168.101.3;
    #所有的请求都以/开始,所有的请求都可以匹配此location
        location / {
        #使用root指令指定虚拟主机目录即网页存放目录
        #比如访问http://ip/test.html将找到/usr/local/html3/test.html
        #比如访问http://ip/item/test.html将找到/usr/local/html3/item/test.html

            root   /usr/local/nginx/html80;
        #指定欢迎页面,按从左到右顺序查找
            index  index.html index.htm;
        }

    }
    #配置虚拟主机
    server {
        listen       8080;
        server_name  192.168.101.3;

        location / {
            root   /usr/local/nginx/html8080;
            index  index.html index.htm;
        }

    }

}

4.4.4. 测试
启动 nginx,查看端口监听状态:
这里写图片描述
访问http://192.168.101.3
这里写图片描述
访问http://192.168.101.3:8080
这里写图片描述

  • 4.5. 基于域名的虚拟主机配置

    4.5.1. 需求
    两个域名指向同一台nginx服务器,用户访问不同的域名显示不同的网页内容,两个域名是aaa.test.com和bbb.test.com,nginx服务器使用虚拟机192.168.101.3 。
    4.5.2. 准备环境
    通过host文件指定aaa.test.com和bbb.test.com对应192.168.101.3虚拟机:修改window的hosts文件:(C:\Windows\System32\drivers\etc)。
    这里写图片描述
    4.5.3. html目录创建
    在192.168.101.3上创建/usr/local/aaa_html,此目录为aaa.test.com域名访问的目录,在192.168.101.3上创建/usr/local/bbb_html,此目录为bbb.test.com域名访问的目录。
    目录中的内容使用nginx自带的html文件,将/usr/local/nginx/html中的内容拷贝分别拷贝到上边两个目录中,并且将aaa_html目录中的index.html内容改为:“Welcome to aaa nginx!”,将bbb_html目录中的index.html内容改为“Welcome to bbb nginx!”。
    4.5.4. 配置虚拟主机
    修改/usr/local/nginx/conf/nginx.conf文件,添加两个虚拟主机,如下:

#配置虚拟主机aaa.test.com 
server {
        #监听的ip和端口,配置本机ip和端口
        listen 192.168.101.3:80;        
        #虚拟主机名称是aaa.test.com,请求域名aaa.test.com的url将由此server配置解析
        server_name aaa.test.com;    
        #所有的请求都以/开始,所有的请求都可以匹配此location
        location / {
        #使用root指令指定虚拟主机目录即网页存放目录
        #比如访问http://ip/test.html将找到/usr/local/aaa_html/test.html
        #比如访问http://ip/item/test.html将找到/usr/local/aaa_html/item/test.html
                root /usr/local/aaa_html;   
                #指定欢迎页面,按从左到右顺序查找
                index index.html index.htm; 
        }
    }

#配置虚拟主机bbb.test.com
server {
    listen 192.168.101.3:80;
    server_name bbb.test.com;
    location / {
            root /usr/local/bbb_html;
            index index.html index.htm;
    }
}

4.5.5. 测试
访问aaa.test.com、bbb.test.com

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值