Nginx介绍
Nginx (engine x)是一个高性能的HTTP和反向代理服务,也是一个IMAP/POP3/SMTP服务。Nginx是由伊戈尔:赛索耶夫为俄罗斯访问量第二的Rambler.u站点(俄文:Paw6nep)开发的,第一个公开版本0.1.0发布于2004年10月4日。
其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗 而闻名.2011年6月1日,nginx 1.0.4发布。
Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。
文档:https://tengine.taobao.org/book/
Nginx特点
优点
- 高并发量:基于 epoll/kqueue 模型开发,支持高并发量,官方说其支持高达 5w 并发连接数的响应
- 内存消耗少:善于处理静态文件,相较于其他web(比如:apache),占用更少的內存及资源
- 简单稳定:配置简单(一个conf文件),运行简单(nginx命令),而且运行稳定
- 模块化程度高:功能模块插件化设计,可以自由配置相应的功能。
- 支持Rwrite重写规则:能够根据域名、URL等请求关键点,实现定制化的高质量分发。
- 低成本:Nginx的负载均衡功能很强大而且免费开源,相较于几十万的硬件负载均街器成本相当低,
- 支持多系统:Nginx代码完全用C语言从头写成,可以在各系统上编译并使用。
缺点
- 动态处理差:nginx善于处理静态文件,但是处理动态页面相较于Apache之类重量级的web软件能力稍欠缺。
- rewrite弱:虽然nginx支持rewrite功能多,但是相较于Apache之类童量级的web软件能力稍欠缺。
安装Nginx软件
sudo apt-get install nginx -y
浏览器查看:http://114.55.225.100/
nginx开启(停止)命令
systemctl start | stop | reload ...nginx
nginx相关命令
| 指令 | 说明 |
|---|---|
| nginx -V | 配置参数 |
| nginx -v | 版本信息 |
| nginx -s stop | 停止nginx |
| nginx -s reload | 重启nginx |
| nginx -t | 检查默认配置文件 |
| Nginx -t -c file conf | 检查指定配置文件 |
nginx移除相关命令
查看和nginx相关的软件
dpkg --get-selections | grep nginx
移除nginx,包括相关文件
apt-get --purge remove nginx
apt-get --purge remove nginx-common
apt-get --purge remove nginx-core
nginx配置
安装目录介绍
| 路径 | 介绍 |
|---|---|
| /etc/nginx/ | root家目录 |
| /etc/nginx/nginx.conf | nginx主配置文件,启动时会读取nginx.conf文件 |
| /var/log/nginx | 日志目录 |
| /var/www/html | 默认网站目录 |
配置信息介绍

我们来看一个示例配置:
user nobody;
worker_processes 1;
error_log logs/error.log info;
events {
worker_connections 1024;
}
http {
server {
listen 80;
server_name www.linuxidc.com;
access_log logs/linuxidc.access.log main;
location / {
index index.html;
root /var/www/linuxidc.com/htdocs;
}
}
server {
listen 80;
server_name www.Androidj.com;
access_log logs/androidj.access.log main;
location / {
index index.html;
root /var/www/androidj.com/htdocs;
}
}
}
mail {
auth_http 127.0.0.1:80/auth.php;
pop3_capabilities "TOP" "USER";
imap_capabilities "IMAP4rev1" "UIDPLUS";
server {
listen 110;
protocol pop3;
proxy on;
}
server {
listen 25;
protocol smtp;
proxy on;
smtp_auth login plain;
xclient off;
}
}
全局配置段
主要是全局性的和服务级别的属性配置,常见的主要有以下几种设置
| 配置选项 | 说明 |
|---|---|
| user | 设置使用用户 |
| worker_processed | 进行增大并发连接数的处理 跟cpu保持一致 八核设置八个 |
| error_log | nginx的错误日志 |
| pid | 服务启动时候的pid |
| enents | 定义事件相关的属性 |
| --------- workerconnections | 一个进程允许处理最大连接数 |
| ---------- user | 定义使用的内核模型 |
http配置段
| 配置选项 | 说明 |
|---|---|
| include mime.types | 文件扩展名与文件类型映射表 |
| default type application/octet-stream | 默认文件类型 |
| sendfile on | 开启目录列表访问,适合下载服务器,默认关闭 |
| tcp_onpush on | 防止网络阻塞 |
| tcp_nodelay on | 防止网络阻塞 |
| keepalive timeout 120 | 长连接超时时间,单位是秒 |
| gzip on | 开启gzip压维输出 |
server {
server_name 192.168.19.130;
listen 80;
root /var/www/html
index index.html
}
server配置段最重要的属性是listen和server_name。它们都是用于匹配并处理请求的。
listen属性
作用:定义Server监听的ip和port,当ip/port匹配时候才进行下一步匹配
表现形式:
| 形式 | 描述 | 示例 | 完整示例 |
|---|---|---|---|
| IP:Port | 地址精确表示样式 | listen 10.10.10.10:99 | listen 10.10.10.10:99 |
| IP | 自动监听IP:80地址 | listen 10.10.10.10 | listen 10.10.10.10:80 |
| Port | 自动监听全地址:Port | listen 99或[::]:99 | listen 0.0.0.0:99 |
| default_server | 自动使用默认地址 | listen default_server | listen localhost:80 |
使用原则:
首先将所有样式补全成IP:Port,然后匹配,匹配Server多,那么接着使用Server _name匹配
server_name属性
作用:定义server监听的域名,当域名匹配的时候才进行下一步操作
表现形式:
| 格式 | 完整样式 | 前缀正则样式 | 后缀正则样式 | 禁止非法域名或IP |
|---|---|---|---|---|
| 形式 | www.example.com | *.example.com | www.example.* | _ |
使用原则:
优先使用完整样式,然后使用前缀正则样式,最后使用后缀正则样式,如果正则样式相同的时候,匹配最长,否则就走非法现则。
非法域名/IP,表示请求该主机上一个不存在的IP域名
root属性
作用:定义server相应请求的html文件的所在路径
表现形式:
root /var/www/html
index属性
作用:定义响应请求返回的文件名称或格式
表现形式:
index index.html index.htm index.nginx-debian.html;
实例
在/etc/nginx/conf.d 目录下创建server.conf配置文件
server { # 监听端口 listen 7000; # 匹配域名 server_name 192.168.19.130; # 根路径 # root /var/www/html; # 默认显示页面 # index index.html index.htm index.nginx-debian.html; # 第二种写法 location / { root /var/www/html; index index.html index.htm index.nginx-debian.html; } }检查nginx配置后重载服务
nginx -t systemctl reload nginx部署https证书
# 步骤 1: 安装 Certbot 和 Nginx 插件 apt update apt install certbot python3-certbot-nginx # 步骤 2: 获取 SSL 证书 certbot --nginx -d www.mayanliang.cn # 接下来填写邮箱回车键一直点y就可以了 # 证书保存在:/etc/letsencrypt/live/www.mayanliang.cn/fullchain.pem # 密钥保存在:/etc/letsencrypt/live/www.mayanliang.cn/privkey.pem