作者:海岛
起源:https://segmentfault.com/a/11...
一、环境
服务器版本:CentOS 7.2
为了保障学习阶段不遇到奇怪的事件,请保障以下四点(大神选择性忽视)
- 确认零碎网络
- 确认yum可用
- 确认敞开iptables
- 确认停用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 automakeyum -y install wget httpd-tools vim
二、Nginx是什么?
Nginx是一个开源且高性能、牢靠的HTTP中间件、代理服务
其余的HTTP服务:
- HTTPD-Apache基金会
- IIS-微软
- 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/localwget -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启动时的pidevents { 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开发手册(嵩山版)》最新公布,速速下载!
感觉不错,别忘了顺手点赞+转发哦!