• Linux -- nginx


    一. 网络服务

      web服务器和web框架的关系

    web服务器(nginx):接收HTTP请求(例如www.baidu.com)并返回数据
    
    web框架(django,flask):开发web应用程序,处理接收到的数据

      nginx

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

    二 . Tengine

    Tengine是由淘宝网发起的web服务器项目,在nginx基础上支持高并发,并且性能非常的稳定.  

      安装Tengine

    复制代码
    # 1. 检测是否在Linux上是否通过yum安装了nginx(只有用yum安装才能用下面方法检测)
    rpm  -qi  nginx
    # 如果有返回值就证明安装了,然后删除它
        yum remove nginx -y 
    # 2. 安装nginx依赖包 
    yum install gcc patch libffi-devel python-devel  zlib-devel bzip2-devel openssl-devel 
      ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel openssl openssl-devel -y # 3.源代码编译安装tenginx 1.下载淘宝nginx的源代码包 wget http://tengine.taobao.org/download/tengine-2.3.0.tar.gz 2.解压缩源代码 tar -zxvf tengine-2.3.0.tar.gz 3.切换进入nginx源代码目录 进行编译安装 cd tengine-2.3.0 4.释放编译文件,指定安装路径 ./configure --prefix=/opt/s18tngx/ 5.开始编译且安装 make && make install 6.查看nginx的安装目录有哪些东西 [root@wangdachui s18tngx]# ls # conf 存放nginx的配置文件目录的 # html 存放前端文件的地儿 # logs 存放nginx日志文件的目录 # sbin 存放nginx的可执行命令 7.配置nginx的环境变量,支持快捷启动 [root@localhost sbin]# vim /etc/profile 把sbin的绝对路径加到path里 8.使其生效 source /etc/profile 9.启动nginx 直接输入nginx命令 10.修改nginx的首页文件 存放nginx安装目录下的html文件夹中,名为index.html的文件 11.vim index.html 写入想要展示的页面
    复制代码

    三 . nginx配置文件学习

    Nginx主配置文件/etc/nginx/nginx.conf是一个纯文本类型的文件,整个配置文件是以区块的形式组织的。一般,每个区块以一对大括号{}来表示开始与结束

      nginx主配置文件解析

        coreModule核心模块

    user www;                       #Nginx进程所使用的用户
    worker_processes 1;             #Nginx运行的work进程数量(建议与CPU数量一致或auto)
    error_log /log/nginx/error.log  #Nginx错误日志存放路径
    pid /var/run/nginx.pid          #Nginx服务运行后产生的pid进程号

        event事件模块

    events {            
        worker_connections  //每个worker进程支持的最大连接数
        use epool;          //事件驱动模型, epoll默认
    }

        http内核模块

    复制代码
    # 公共的配置定义在http{}
    http {   #http层开始
    ...    
         gzip  on;   # 开启压缩图片功能
        # 使用Server配置网站, 每个Server{}代表一个网站(简称虚拟主机)
        'server' {
            listen       80;                 #监听端口, 默认80
            server_name  localhost;  # 提供服务的域名或主机名
            access_log host.access.log  # 访问日志
            # 控制网站访问路径
            'location' / {
                root   /opt/share/nginx/html;   # 存放网站代码路径
                index  index.html index.htm;    # 服务器返回的默认页面文件
            }
            # 指定错误代码, 统一定义错误页面, 错误代码重定向到新的Locaiton
            error_page   500 502 503 504  /50x.html;
        }
    }
    复制代码

      nginx功能学习

    # 1. C:WindowsSystem32driversetchosts   用notepad++打开
    修改windows的hosts文件,就是写一个假的域名
    # 2.写入测试域名,如下
    192.168.81.130  www.s18lol.com   (格式必须是这样)  
    然后输入www.s18.lol.com 就访问的是192.168.81.130

      配置nginx多虚拟主机实战, 其实就是修改nginx.conf,写入多个server标签,支持多个虚拟主机

    复制代码
    server {
            listen       80;
            server_name  www.s18dnf.com;
            location / {
                root   /opt/s18dnf/;    # 需要建这个文件夹
                index  index.html index.htm;
            }   
            #第二个虚拟主机 lol网址
    server  {
        listen 80;
        server_name  www.s18lol.com;
        location  /  {
            root   /opt/s18lol/;   # 需要建这个文件夹
            index index.html;
        }
    }
    复制代码

      新建所需要的文件夹

    mkdir -p /opt/s18dnf/   /opt/s18lol/
    # 在这两个文件夹下分别:
    touch index.html     # 然后去copy网页

      nginx多虚拟主机的两个概念

    1.如果没有域名,写ip地址的话,虚拟主机是自上而下的加载顺序 ,
    2.如果有域名,nginx会基于域名区分虚拟主机

      测试语法是否正确

    [root@localhost conf]# nginx -t

      改完配置,重新加载nginx,平滑重启

    nginx -s reload 

    四 . 学习nginx的状态模块功能

      1.修改nginx,conf的配置文件

    # 找到一个server虚拟主机,写入如下配置 (一定写在server里面)
    location /status  {
            stub_status on;
    }    

      2.重启nginx,加载status状态模块

    nginx -s reload 

      3.通过ab压测命令,去给网站发n多个请求

    # 安装ab压测命令工具
    yum -y install httpd-tools

      4.给服务器nginx发10000个请求

    ab -kc 1000 -n 10000 http://192.168.81.130/

    六 . nginx的access.log访问日志功能

    复制代码
    # 编辑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;
        access_log  "pipe:rollback logs/access_log interval=1d baknum=7 maxsize=2G"  main;
        
        重启nginx查看logs下的日志文件,检测用户请求信息
        # cd 到 logs(这样才能执行下面的命令)
        tail -f  logs/access.log 
    复制代码

    七 . nginx的404页面

    复制代码
    修改nginx.conf的404错误页面优化
    找到如下配置
       #当错误状态码是 40x系列就返回,nginx目录下的40x.html
            error_page  404 403 402 400 401               /40x.html;
            
        cd /opt/s18lol/
        vim 40x.html
            # 写入想要的页面
        
        重启nginx 查看404页面    
    复制代码

    八 . nginx限制ip访问功能

    复制代码
    # 找到nginx.conf修改如下代码
            location / {
                #禁止192.168.226.0/24 这个地址段所有的ip访问 
                 # 192.168.226.0/24   # 0就是0-255字段,24是子网掩码
    
                # 禁止 192.168.226.1 这个ip访问
                deny  192.168.226.1 ; 
                root   /opt/s18dnf;
                index  index.html index.htm;
            }
    复制代码

    九 . 实现nginx反向代理功能

    复制代码
    # 环境准备  
    准备2台机器
    一个是真实资源文件        192.168.81.130      就理解为房东 ,提供dnf的资源界面
    一个是反向代理服务器      192.168.81.131   理解为中介,当我们访问中介,就访问到dnf的网站资源
    
        1.分别在2台机器,安装nginx  
        
        2.资源服务器已经配置好,返回dnf页面
        
        3.反向代理服务器配置如下
        
        vim编辑nginx.conf  找到第一个server虚拟主机
        修改配置如下
               server_name  192.168.81.131;
    
               location / {
                    proxy_pass  http://192.168.226.128;
            }
    
        4.重启nginx,查看反向代理效果
    复制代码
  • 相关阅读:
    终于干掉了默认的输入法, 关于ctfmon.exe文件
    新工作一周的一些记录
    派送Maxthon 2.0 社区预览版本邀请.
    终于决定要跳槽了.
    当QA推出免责条款, 你会怎么看?
    Post by Word 2007, Test. 用word2007来发表一篇随笔.
    一个好的点菜系统
    再见2006
    昨天的实况以及忽悠姐妹花
    在公司我最近都只喝矿泉水
  • 原文地址:https://www.cnblogs.com/uiys/p/10673541.html
Copyright © 2020-2023  润新知