Nginx (engine x) 是一个轻量的,高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器。Nginx是由伊戈尔·赛索耶夫所研发,因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。
第一个公开版本0.1.0发布于2004年10月4日。其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。2011年6月1日,Nginx 1.0.4发布。
其特点是占有内存少,并发能力强, nginx的并发能力在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。
在高连接并发的情况下,Nginx是Apache服务器不错的替代品。
[root@gaosh-1 nginx]# curl -I www.zmkjedu.com
HTTP/1.1 200 OK
Date: Thu, 30 Jul 2020 14:28:24 GMT
Server: Apache/2.4.16 (Unix) OpenSSL/1.0.2k-fips PHP/7.3.6
X-Powered-By: PHP/7.3.6
Link: <https://www.zmkjedu.com/index.php/wp-json/>; rel="https://api.w.org/"
Content-Type: text/html; charset=UTF-8
[root@gaosh-1 nginx]# curl -I www.taobao.com
HTTP/1.1 301 Moved Permanently
Server: Tengine
Date: Thu, 30 Jul 2020 14:29:01 GMT
Content-Type: text/html
Content-Length: 278
Connection: keep-alive
Location: https://www.taobao.com/
Via: cache4.cn1003[,0]
Timing-Allow-Origin: *
EagleId: b7cb179815961193410258113e
Tengine:
Tengine是由淘宝网发起的Web服务器项目。它在Nginx的基础上,针对大访问量网站的需求,添加了很多高级功能和特性。Tengine的性能和稳定性已经在大型的网站如淘宝网、天猫商城等得到了很好的检验。(可以这样理解:淘宝网拿到了Nginx源代码之后,进行了功能的填充、优化等等,然后提交给Nginx官方,但是由于Nginx官方相应慢甚至不响应,加上语言沟通的不顺畅,于是淘宝公司就自己打包,在遵循GPL的原则上进行二次开发,于是就出了现在的Tengine这个版本)。
官网网站:http://tengine.taobao.org/
我们前面的n多篇文章其实都是在使用apache,那么apache有nginx有什么区别呢?
轻量级,同样起web 服务,比apache 占用更少的内存及资源
抗并发,nginx 处理请求是异步非阻塞的,而apache 则是阻塞型的,在高并发下nginx 能保持低资源低消耗高性能
高度模块化的设计,编写模块相对简单
社区活跃,各种高性能模块出品迅速
高并发场景下,nginx可以支持50000个并发连接数的响应
nginx适合做静态和反向代理
rewrite功能 ,比nginx 的rewrite 强大
模块超多,基本想到的都可以找到
少bug ,nginx 的bug 相对较多
apache处理动态请求能力比nginx好
但nginx的缺点是只支持http,https,mail协议,对后端的健康检查只能通过端口来检测,不支持通过url检测,不支持session直接保持。
[root@gaosh-1 ~]# yum -y install gcc gcc-c++ pcre-devel openssl-devel wget
[root@gaosh-1 ~]# wget http://nginx.org/download/nginx-1.12.2.tar.gz
[root@gaosh-1 ~]# tar xf nginx-1.12.2.tar.gz
[root@gaosh-1 ~]# cd nginx-1.12.2
[root@gaosh-1 nginx-1.12.2]# ./configure --prefix=/usr/local/nginx ##环境检测
[root@gaosh-1 nginx-1.12.2]# make && make install
[root@gaosh-1 nginx-1.12.2]# ln -sv /usr/local/nginx/sbin/nginx /usr/bin/nginx
"/usr/bin/nginx" -> "/usr/local/nginx/sbin/nginx" ##做软链接设置启动命令
[root@gaosh-1 nginx-1.12.2]# nginx ## 启动
[root@gaosh-1 nginx-1.12.2]# nginx -t ## 检查配置文件的语法
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
[root@gaosh-1 nginx-1.12.2]#
[root@gaosh-1 nginx-1.12.2]# ps -ef |grep nginx ## 查看进程
root 47664 1 0 21:16 ? 00:00:00 nginx: master process nginx
nobody 47665 47664 0 21:16 ? 00:00:00 nginx: worker process
root 47670 45168 0 21:17 pts/2 00:00:00 grep nginx
[root@gaosh-1 nginx-1.12.2]#
[root@gaosh-1 nginx-1.12.2]# nginx -s stop ## 关闭nginx
[root@gaosh-1 nginx-1.12.2]# ps -ef |grep nginx
root 47675 45168 0 21:18 pts/2 00:00:00 grep nginx
[root@gaosh-1 nginx-1.12.2]#
[root@gaosh-1 nginx-1.12.2]# nginx ## 启动nginx
[root@gaosh-1 nginx-1.12.2]# nginx -s reload ## 重新加载配置文件
[root@gaosh-1 nginx-1.12.2]#
```objectivec
[root@gaosh-1 nginx-1.12.2]# cd /usr/local/nginx/
[root@gaosh-1 nginx]# ls
client_body_temp conf fastcgi_temp html logs proxy_temp sbin scgi_temp uwsgi_temp
[root@ gaosh-01 ~]# cat /usr/local/nginx/conf/nginx.conf
(1)user nginx; #配置运行nginx的用户
(2)worker_processes 2; #初始的子进程数量
(3)worker_connections 1024; #配置单个进程处理的最大请求连接数
(4)server{ #配置虚拟主机
(5)listen #配置虚拟主机监听端口
(6)server_name #配置服务器域名
(7)location 匹配规则 { } #配置匹配特定的url
(8)root #配置网站根目录
(9)index #配置虚拟主机的默认首页
(10)error_page 404 /404.html;
#解释:当出现404的时候,要重定向到网站根目录下的404.html页面
}
location匹配规则
= | 开头表示精确匹配 |
---|---|
^~ | 开头表示 uri 以某个常规字符串开头,理解为匹配 url 路径即可。nginx 不对 url 做编码,因此请求为/static/20%/aa,可以被规则^~ /static/ /aa匹配到(注意是空格) |
~ | 开头表示区分大小写的正则匹配 |
~* | 开头表示不区分大小写的正则匹配 |
/ | 通用匹配,任何请求都会匹配到 |