zoukankan      html  css  js  c++  java
  • Nginx 入门到实战,新手必懂~

    作者:海岛

    来源:https://segmentfault.com/a/1190000014893012

    一、环境

    服务器版本:CentOS 7.2

    为了保证学习阶段不遇到奇怪的事情,请保证以下四点(大神选择性无视)

    1. 确认系统网络
    2. 确认yum可用
    3. 确认关闭iptables
    4. 确认停用selinux
    #查看iptables状态
    systemctl status firewalld.service
    #关闭防火墙(临时关闭)
    systemctl stop firewalld.service
    #查看SELinux状态 
    getenforce
    #临时关闭SELinux 
    setenforce 0
    

    安装一些系统基本工具,正常情况系统都会自带(没有在装哦)

    yum -y install gcc gcc-c++ autoconf pcre pcre-devel make automake
    yum -y install wget httpd-tools vim
    

    二、Nginx是什么?

    Nginx是一个开源且高性能、可靠的HTTP中间件、代理服务
    其他的HTTP服务:

    1. HTTPD-Apache基金会
    2. IIS-微软
    3. GWS-Google(不对外开放)

    近几年,Nginx的市场占有率越来越高,一度飙升,为什么呢?接下来我们就知道了!

    三、我们为什么选择Nginx?

    1. IO多路复用epoll(IO复用)

    如何理解呢?举个例子吧!
    有A、B、C三个老师,他们都遇到一个难题,要帮助一个班级的学生解决课堂作业。
    老师A采用从第一排开始一个学生一个学生轮流解答的方式去回答问题,老师A浪费了很多时间,并且有的学生作业还没有完成呢,老师就来了,反反复复效率极慢。
    老师B是一个忍者,他发现老师A的方法行不通,于是他使用了影分身术,分身出好几个自己同一时间去帮好几个同学回答问题,最后还没回答完,老师B消耗光了能量累倒了。
    老师C比较精明,他告诉学生,谁完成了作业举手,有举手的同学他才去指导问题,他让学生主动发声,分开了“并发”。
    这个老师C就是Nginx。

    2. 轻量级

    • 功能模块少 - Nginx仅保留了HTTP需要的模块,其他都用插件的方式,后天添加
    • 代码模块化 - 更适合二次开发,如阿里巴巴Tengine

    3. CPU亲和

    把CPU核心和Nginx工作进程绑定,把每个worker进程固定在一个CPU上执行,减少切换CPU的cache miss,从而提高性能。

    三、安装与目录

    本人使用了鸟哥的lnmp集成包,简单方便-推荐!

    #执行这句语句,根据指引,将安装 nginx php mysql 可进入lnmp官网查看更详细的过程
    #默认安装目录/usr/local
    wget -c http://soft.vpser.net/lnmp/lnmp1.4.tar.gz && tar zxf lnmp1.4.tar.gz && cd lnmp1.4 && ./install.sh lnmp
    
    #默认安装目录
    /usr/local
    

    四、基本配置

    #打开主配置文件,若你是用lnmp环境安装
    vim /usr/local/nginx/conf/nginx.conf
    
    ----------------------------------------
    
    user                    #设置nginx服务的系统使用用户
    worker_processes        #工作进程数 一般情况与CPU核数保持一致
    error_log               #nginx的错误日志
    pid                     #nginx启动时的pid
    
    events {
        worker_connections    #每个进程允许最大连接数
        use                   #nginx使用的内核模型
    }
    

    我们使用 nginx 的 http 服务,在配置文件 nginx.conf 中的 http 区域,配置无数个 server ,每一个 server 对应这一个虚拟主机或者域名

    http {
        ... ...        #后面再详细介绍 http 配置项目
        
        server {
            listen 80                          #监听端口;
            server_name localhost              #地址
            
            location / {                       #访问首页路径
                root /xxx/xxx/index.html       #默认目录
                index index.html index.htm     #默认文件 
            }        
            
            error_page  500 504   /50x.html    #当出现以上状态码时从新定义到50x.html        
            location = /50x.html {             #当访问50x.html时
                root /xxx/xxx/html             #50x.html 页面所在位置
            }        
        }
        
        server {
            ... ... 
        } 
    }
    

    一个 server 可以出现多个 location ,我们对不同的访问路径进行不同情况的配置
    我们再来看看 http 的配置详情

    http {
        sendfile  on                  #高效传输文件的模式 一定要开启
        keepalive_timeout   65        #客户端服务端请求超时时间
        log_format  main   XXX        #定义日志格式 代号为main
        access_log  /usr/local/access.log  main     #日志保存地址 格式代码 main
    }
    

    四、模块

    查看 nginx 已开启和编联进去的模块,模块太多了,就不在这长篇大论,有需要自行百度吧~

    #大写V查看所有模块,小写v查看版本
    nginx -V
    # 查看此配置文件 是否存在语法错误
    nginx -tc /usr/local/nginx/conf/nginx.conf
    

    近期热文推荐:

    1.1,000+ 道 Java面试题及答案整理(2021最新版)

    2.别在再满屏的 if/ else 了,试试策略模式,真香!!

    3.卧槽!Java 中的 xx ≠ null 是什么新语法?

    4.Spring Boot 2.5 重磅发布,黑暗模式太炸了!

    5.《Java开发手册(嵩山版)》最新发布,速速下载!

    觉得不错,别忘了随手点赞+转发哦!

  • 相关阅读:
    2019 ICPC Malaysia National H题
    欧拉定理证明
    P3384 【模板】树链剖分
    HDU 6070 Dirt Ratio(线段树、二分)
    51Nod 1571 最近等对(线段树、离线查询)
    51Nod 1781 Pinball(线段树、dp、离散化)
    51Nod 1494 选举拉票(权值线段树)
    51Nod 1766 树上的最远点对(欧拉序、lca、线段树区间合并)
    lintcode-179-更新二进制位
    lintcode-178-图是否是树
  • 原文地址:https://www.cnblogs.com/javastack/p/15143288.html
Copyright © 2011-2022 走看看