• Nginx


    Nginx简介

    nginx是一个开源的,支持高性能,高并发的www服务和代理服务软件。它是一个俄罗斯人lgor sysoev开发的,作者将源代码开源出来供全球使用。
    nginx比它大哥apache性能改进许多,nginx占用的系统资源更少,支持更高的并发连接,有更高的访问效率。
    nginx不但是一个优秀的web服务软件,还可以作为反向代理,负载均衡,以及缓存服务使用。
    安装更为简单,方便,灵活。
    nginx可以说是非常nb了

    Nginx的优点:

    • 支持高并发,能支持几万并发连接
    • 资源消耗少,在3万并发连接下开启10个nginx线程消耗的内存不到200M
    • 可以做http反向代理和负载均衡
    • 支持异步网络i/o事件模型epoll

    Tengine

    Tengine是由淘宝网发起的Web服务器项目。和Nginx的用法一样,它在Nginx的基础上,针对大访问量网站的需求,添加了很多高级功能和特性。Tengine的性能和稳定性已经在大型的网站如淘宝网,天猫商城等得到了很好的检验。它的最终目标是打造一个高效、稳定、安全、易用的Web平台。

    Nginx的安装环境准备

    1.下载源码包

    wget -c https://nginx.org/download/nginx-1.12.0.tar.gz

    2.解压缩源码

    进入/opt/目录下
    tar -zxvf nginx-1.12.0.tar.gz

    3.释放configure

    ./configure --prefix=/opt/nginx112/

    4.编译安装

    到nginx112目录下 make && make install

    5.启动,关闭,重启nginx

    进入sbin目录,找到nginx启动命令
    ./nginx #启动
    ./nginx -s stop #关闭
    ./nginx -s reload #平滑重启 ,修改了nginx.conf之后,可以不重启服务,加载新的配置

    Nginx的配置

    nginx目录:

    conf 存放nginx的配置文件的nginx.conf 里是控制nginx所有功能的文件
    html 存放网页html的目录 默认是index.html
    logs 存放log日志文件
    sbin 存放nginx可执行命令的 nginx脚本命令

    nginx.conf 核心配置如下:

    worker_processes  5;#定义nginx工作进程数
    #error_log  logs/error.log;#错误日志
    
    #http定义代码主区域
    http {
    include       mime.types;
    default_type  application/octet-stream;
    
    #定义nginx的访问日志功能
    #nginx会有一个accses.log功能,查看用户访问的记录
    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;
    keepalive_timeout  65;
    gzip  on;#开启gzip压缩传输
    
    #虚拟主机1  定义一个 自定义网站 
    server {
        listen       80;#默认监听80端口
        
    	#定义网站的域名www.tkktk.tk
    	#如果没有域名,就填写服务器的ip地址  192.168.xx.xx
        server_name www.tkktk.tk;
    	#nginx的url域名匹配
    	#只要请求来自于www.tkktk.tk/xxxxx
    	#最低级的匹配,只要来自于www.woshidouyu.tv这个域名,都会走到这个location
        location / {	
            root   html;#这个root参数,也是关键字,定义网页的根目录,可以自由修改这个root定义的网页根目录
            #以nginx安装的目录为相对路径  /opt/nginx112/html 
            
            index  index.html index.htm;#index参数定义网站的首页文件名
            }
    	#错误页面的优化,只要是40x的错误 都会去找40x.html
        error_page  400 401  402  403  404   /40x.html;
    	}
    }
    

    nginx多虚拟主机的配置

    1.在nginx.conf中添加两个虚拟主机标签 server{}

    配置文件如下:

    server {
        listen       80;
        server_name  域名1;
        location / {
            root   /opt/jd;
            index  index.html index.htm;
        }
        error_page  404              /40x.html;
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
    server {
    listen 80;
    server_name  域名2;
    location  /  {
    root  /opt/tb;
    index  index.html;
    }
    }
    

    2.重启nginx,加载新的配置

    nginx -s stop 
    nginx 
    

    3.修改windows的本地hosts解析文件,用于域名解析

    修改hosts文件只是为了用浏览器可以用域名访问到自己的本地服务器,如果用云服务器并且有域名可以忽略

    windows的hosts文件路径:

    C:WindowsSystem32driversetc

    写入如下配置

    格式: 前面写自己服务器ip 后面写自定义的域名

    192.168.11.37  liubei.com
    192.168.11.37  guanyu.com
    

    4.准备两个虚拟主机的 index.html文件

    /opt/jd/index.html
    /opt/tb/index.html 
    

    5.在windows浏览器中,查看两个域名对应到的虚拟主机

    访问liubei.com 域名
    然后访问guanyu.com 域名,查看网站的资料的内容变化

    nginx的错误页面优化的功能:

    通过error_page参数定义错误页面的 html文件

     server {
            listen       80;
            server_name  liubei.com;
            location / {
                root   /opt/myhome;#定义html的文件目录
                index  index.html index.html;
            }
    		#这个错误页面就应该存放在 /opt/myhome/40x.html 
            error_page  404              /40x.html;
            error_page   500 502 503 504  /50x.html;
            location = /50x.html {
                root   html;
            }
        }
    

    nginx访问日志功能

    配置方式
    1.修改nginx.conf配置文件,打开如下配置注释

    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;
    

    nginx拒绝访问功能

    在某一个虚拟主机下,顶一个deny参数,可以拒绝ip地址对虚拟主机的访问

    server {
            listen       80;
            server_name  liubei.com;
            location / {
                deny  192.168.11.0/24;#拒绝这个ip访问
                root   /opt/jd;
                index  index.html index.htm;
            }
            error_page  404              /40x.html;
            error_page   500 502 503 504  /50x.html;
            location = /50x.html {
                root   html;
            }
        }
    

    nginx代理功能

    代理是什么?
    简单来说代理就像狗中介

    顾客->中介->房东

    Alt text

    1.实验准备,准备2台nginx机器

    机器1 192.168.11.37 用作 web服务器,用作数据返回
    机器2 192.168.11.167 用作nginx反向代理服务器
    在windows中访问 代理服务器,然后让代理服务器 去拿 web服务器的数据
    windows > 192.168.11.158 > 192.168.11.37
    windows < 192.168.11.158 < 192.168.11.37

    1.准备机器1相当于web服务器,只是对数据页面的一个返回

    server {
            listen       80;
            server_name  192.168.11.37;
    
            #charset koi8-r;
            location / {
                root   html;
                index  index.html index.htm;
            }
    
    		}
    

    2.准备机器2,用作nginx的反向代理服务器,这个机器不存数据,只转发请求配置如下

    server {
        listen       80;
        server_name  192.168.11.158;
        #charset koi8-r;
        #access_log  logs/host.access.log  main;
    	
    	#只要192.168.11.158/访问 就走location 
        location / {
    	    proxy_pass http://192.168.11.37;#在这里进行反向代理配置
        }
    
    }
    

    nginx负载均衡

    Alt text
    负载均衡,顾名思义,就是让多个服务器来分担压力,不至于压力太大造成服务器挂逼

    1.集群是什么
    一堆服务器做一件事

    2.集群性能很高
    淘宝本来的核心支付服务器是小型机,非常昂贵,且难以维护
    后来都将服务器更换为集群架构
    一堆便宜的服务器,维护者一个功能运转

    3.高可用
    单点机器如果宕机了,整个项目都凉了
    集群单机机器宕机,不会影响整体的运转

    nginx负载均衡的配置

    实验如下

    1,准备三台机器

    机器1 nginx负载均衡器 192.168.11.158
    nginx.conf配置如下

    	#定义nginx负载均衡池,里面默认是轮训算法,轮训着来分配
    	#也可以用weight 权重算法,根据配置不同的权重来分配
    	#也可以用ip_hash算法,同一个ip请求的总是一台服务器,但是第一次分配是随机的
    	
    	upstream nginx_pools {#这里是均衡池
    		server  192.168.11.37  weight=10;#weight可以设置权重
    		server 192.168.11.167  ;
    	}
    	server {
    		listen       80;
    		server_name  192.168.11.158;
    
    		#charset koi8-r;
    
    		#access_log  logs/host.access.log  main;
    		#在这里进行反向代理配置
    		#192.168.11.158/
    		location / {
    		proxy_pass http://nginx_pools;
    	}
    	}
    

    机器2 准备nginx 返回页面数据 192.168.11.37
    nginx.conf配置如下

    	    server {
    			listen       80;
    			server_name  192.168.11.37;
    			location / {
    				root   /opt/jd;
    				index  index.html index.htm;
    			}
    			error_page  404              /40x.html;
    			error_page   500 502 503 504  /50x.html;
    			location = /50x.html {
    				root   html;
    			}
    }
    

    机器3 也准备nginx 返回页面数据 192.168.11.167

     server {
            listen       80;
            server_name  192.168.11.167;
    
        #charset koi8-r;
    
        #access_log  logs/host.access.log  main;
    
        location / {
            root   html;
            index  index.html index.htm;
        }
    
    2.分别启动三台机器,三个nginx服务
    3.在windows中访问负载均衡器的地址,查看请求分发,

    访问 192.168.11.158

  • 相关阅读:
    设计模式学习--Singleton
    Add Binary
    简洁的ios小界面
    第一节、介绍
    魅族MX5和努比亚布拉格手机參数对照
    python 深浅拷贝 进阶
    为什么要重写equals()方法与hashCode()方法
    在Myeclipse buildpath 加server lib
    push本地代码到github出错
    mysql事务,select for update,及数据的一致性处理
  • 原文地址:https://www.cnblogs.com/qq752059037/p/10259561.html
Copyright © 2020-2023  润新知