nginx经常挂在嘴边的就是反向代理,不过他还可以干很多事,我所了解的只是反向代理、静态文件缓存、静态资源服务器,对于负载均衡只是略有涉及。
Nginx (“engine x”) 是一个高性能的 HTTP 和 反向代理 服务器 ,也是一个 IMAP/POP3/SMTP 代理 服务器 。 Nginx 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,第一个公开版本0.1.0发布于2004年10月4日。其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名
引用一下菜鸟教程的简介:Nginx功能丰富,可作为HTTP服务器,也可作为反向代理服务器,邮件服务器。支持FastCGI、SSL、Virtual Host、URL Rewrite、Gzip等功能。并且支持很多第三方的模块扩展。Nginx的稳定性、功能集、示例配置文件和低系统资源的消耗让他后来居上,在全球活跃的网站中有12.18%的使用比率,大约为2220万个网站。
特点
(1):代理服务器,快速高效反向代理,提升网站性能。
(2):负载均衡器,内部支持Rails和PHP,也可支持HTTP代理服务器,对外进行服务。同时支持简单容错和利用算法进行负载均衡。
(3):性能方面,Nginx专门为性能设计,实现注重效率。采用Poll模型,可以支持更多的并发连接,并在大并发时占用很低内存。
(4):稳定性方面,采用分阶段资源分配技术,使CPU资源占用率低。
(5):高可用性方面,支持热备,启动迅速。
nginx安装
mac 下安装
brew install nginx
安装目录为 /usr/local/Cellar/nginx/1.17.2/
配置文件目录为 /usr/local/etc/nginx/nginx.conf
服务器默认路径 /usr/local/var/www
常用命令
mac 下的启动命令
-
启动
nginx
-
快速停止关闭
nignx -s stop
-
优雅的关闭
nginx -s quit
-
承载配置文件
nginx -s reload
-
查看nginx进程
ps -ef | grep nginx
-
查看配置文件是否正确
nginx -t
-
优雅的杀死nginx进程
kill -quit 进程号
-
快速的杀死nginx进程
kill -term 进程号
nginx配置
nginx 文件的默认配置文件位置 /usr/local/etc/nginx/nginx.conf
打开 /usr/local/etc/nginx/
目录可以看到,里面有很多的配置文件,启动有一个nginx.conf
和 nginx.conf.default
两个配置文件,刚开始安装的时候,两个文件的内容是一样的,所以我们可以肆意的修改nginx.conf
搞崩的话就直接把nginx.conf.default
中的内容复制过来就行了又是一个新的nginx。
配置文件架构
// nginx全局块
...
// events块
events {
...
}
// http 块
http {
// http全局块
...
// server块
server {
...
}
// http全局块
...
}
配置文件加注释说明
# 配置nginx的用户组 默认为nobody
#user nobody;
# 配置nginx的主线程数量 nginx是一个主线程下面多个子线程
worker_processes 1;
# 配置nginx的错误日志 格式为 log路径 log级别
# error_log 的日志级别为: debug info notice warn error crit alert emerg 紧急由低到高
# error_log的默认日志级别为error,那么就只有紧急程度大于等于error的才会记录在日志
# error_log 的作用域为 main http mail stream server location
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
# 指定nginx进程运行文件存放地址
#pid logs/nginx.pid;
events {
# poll是多路复用IO中的一种方式,但是仅用于linux2.6以上内核,可以大大提高nginx的性能
# use poll
# 设置网络的连接序列化 防止惊群现象发生 默认为 on
# accept_mutex on;
# 设置一个进程是否同时接受多个网络连接 默认为 off
# multi_accept off
# 最大连接数 默认为 512
worker_connections 1024;
}
http {
# 文件扩展名和文件类型映射表
include mime.types;
# 默认文件类型
default_type application/octet-stream;
# 日志格式 文章后面会介绍
#log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
#