• java架构之路-(nginx使用详解)nginx的安装和基本配置


    Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和Unix的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的Unix工具软件、应用程序和网络协议。它支持32位64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。
     
    一,安装环境准备:
    1.linux 内核2.6及以上版本:使用uname -a查看即可。
    2.GCC编辑器。
    GCC可以用来编译C语言程序。Nginx没有直接提供二级制可执行程序,只能下载源码进行编译。
    3.PCRE库。
    PCRE是为了让Nginx支持正则表达式。
    4.zlib库
    zlib库用于HTTP包的内容做gzip格式的压缩,如果我们在nginx.conf里配置了gzip on,并指定对于某些类型的HTTP响应使用gzip来进行压缩,以减少网络传输量。
    5.OpenSSL开发库
    如果我们的服务器不只是要支持HTTP,还需要在更安全的SSL协议上传输HTTP,那么就需要拥有OpenSSL了。另外,如果我们想使用MD5,SHA1等散列函数,那么也需要安装OpenSSL库。
     
    安装命令:
    yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel pcre pcre-devel
     
    二,开始编译与安装:
    1.Nginx下载地址:http://nginx.org/en/download.html
    直接去官网下载文件也可以,或者Linux直接输入 wget http://nginx.org/download/nginx-1.14.0.tar.gz
    2.解压tar -zxvf nginx-1.14.0.tar.gz
    3.默认安装(不采用任何模块)
    ./configure 等待执行结束以后,默认会安装在/usr/local/nginx下。
    也可以添加模块。例如:
    # 添加状态查查看模块
    ./configure --with-http_stub_status_module
    4.启动
    我们切换到默认安装文件夹下查看一下文件。大概是这个样子的。
    我们输入./sbin/nginx 也就启动我们的ngxin了
    #查看命令帮助
    ./sbin/nginx -?
    #默认方式启动:
    ./sbin/nginx
    #指定配置文件启动
    ./sbing/nginx -c /tmp/nginx.conf
    #指定nginx程序目录启动
    ./sbin/nginx -p /usr/local/nginx/
     
    地址栏输入我们的IP,就可以访问Nginx了,默认监听80端口。
    5.帮助命令
    当我们输入./sbin/nginx -h我们会看到如下所示
    -?,-h查看帮助文档。
    -v(小写) 查看版本信息
    -V(大写)查看详细版本信息,带插件信息
    -t (小写)检查配置文件是否正确
    -T (大写)检查配置文件是否正确,并且查看一下。
    -q 监听ngxin是否可以正常使用,以及查看端口。
    -s 发送指令 比如-s stop停止服务。 -s quit 处理完当前的任务就停止服务 -s reopen 重新加载配置文件(比如日志文件绑定句柄的行为)。-s reload(重现记载配置,相当于重新启动)
    -p 设置前缀路径
    -c 指定配置文件启动
    -g 给予参数启动,例如./sbin/nginx -g "user root;"以root用户启动。
    在刚才的解压目录下输入 ./configure --help 也会得到帮助命令。这个是编译过程的命令。太多了,没法一个个说,有的还几乎不用。可以去官网自己查看,地址http://nginx.org/en/docs/configure.html
    说两个命令比较常用的。
    ./configure --prefix=path 指定你的安装路径,不然会默认安装在/usr/src/nginx下。
    ./configure --user=name 指定用户启动,设置非特权用户的名称,其凭据将由工作进程使用。安装后,可以nginx.conf使用user指令在配置文件中 更改名称 。默认用户名是nobody。如不设置,可能造成日志文件无法使用的情况发生
    三,Nginx架构说明
    我们在控制台输入ps -ef|grep nginx,这时我们会看到
    他包含了两个进程,一个是master,一个是worker,master是核心管理进程,worker是实际工作的进程,一般来说一个worker运行在一个CPU的一个核上。如果我们是4核CPU,那么我们建议将worker进程配置成小于等于4的。
    简单说一下nginx为啥快,用到了NIO为啥就快。
    nginx接收到请求,会告知CPU,我们要得到什么数据,需要从硬盘哪个位置得到数据。但是它告知完事以后它就走了,不在原地等待数据的返回,返回后继续处理接收到的请求。nginx会保留一个实时查看哪些请求处理完成了,处理完成了就会返回到客户端。(粗略的说一下,后面会详细的说)
    四,Nginx简单配置(正向代理)
    我们的配置都存在/usr/local/nginx/conf/nginx.conf下,我们来看一下都是做什么的。
    第一行,箭头所指位置就是我们的工作线程数,默认是1
    事件模块,内部默认设置的是最大连接数1024。
    http是最常用的配置。我们来详细说明一下。这里只说简单的配置,高级配置在优化Nginx再说。
    http只能存在一个
    sendfile 内核态是否到用户态的一个开关
    keepalive_timeout 闲置连接最大超时时间。
    server配置一个具体的站点,可以设置多个。
    listen监听的端口号
    server_name 监听的域名名称,可以使用通配符,可以配置多个,用空格分开。
    匹配原则,优先最大匹配原则,左边匹配大于右边匹配,匹配完全一致上面的优先。
     
    location 站点具体访问地址路径
    root 路径,相对nginx设置的。
    index页面文件名称。可以写多个用空格分开
    现在我们将配置文件修改为
    则你输入http://localhost/hello时,我们会访问的是nginx下的/www/hello目录,ngxin会默认把location的地址带过来。
    我们可以这样来配置,就不再携带hello会直接访问nginx下的/www目录
    location的配置语法为location 符号 url
    符号包含 /基础url目录匹配
    = 完全匹配
    ~ 验证大小写的URI匹配(正则)
    ~*忽略大写的URI匹配(正则)
    ^~只需要验证前半部分的URI参数(正则)
    匹配优先规则:
    1.精确匹配最高优先
    2.正则匹配优先于^~匹配
    3.前缀最大匹配优先
    4.配置有上到下,相同匹配,上面的优先于下面的。
     

    基于正则的动静分离样例:
    location ~* .(gif|jpg|png|css|js)$ {
          root /usr/www/static;
    }
     
    防盗链配置演示:
    # 加入至指定location 即可实现
    valid_referers none blocked 域名;
     if ($invalid_referer) {
           return 403;
    }
     
    下载限速
    location /download {
        limit_rate 1m; //限制每秒的下载速度 1M/S
    limit_rate_after 30m; // 超过30M之后的文件下载限速(限制文件大小)
    }
     
     
    创建IP黑名单
    #封禁指定IP 加入至指定location 即可实现
    deny 192.168.0.1;
    allow 192.168.0.1;
    #开放指定IP 段
    allow 192.168.0.0/24;
    #封禁所有
    deny all;
    #开放所有
    allow all;
    # 创建黑名单文件
    echo 'deny 192.168.0.132;' >> balck.ip
    #http 配置块中引入 黑名单文件
    include       black.ip;

    最进弄了一个公众号,小菜技术,欢迎大家的加入

  • 相关阅读:
    H3C Comware V5、V7平台交换机分类
    如何从症状上区别风寒感冒与过敏性鼻炎
    rdp3389mstsc使用剪贴板重定向通过远程桌面服务或终端服务会话复制大于 2 GB 的文件 (复制) 会以静默方式失败
    小区光纤PON接入组网方式与案例
    Esxi6.7网络trunk端口设置和vlan端口设置访问
    安装VCenter 6.7的系统要求
    win10自定义时间服务器
    fabric基础设施管理-(四)多机-动态新增组织节点
    fabric基础设施管理-(三)单机-动态新增组织节点
    fabric基础设施管理-(二)基础网络搭建
  • 原文地址:https://www.cnblogs.com/cxiaocai/p/11432243.html
Copyright © 2020-2023  润新知