Nginx:修订间差异
(创建页面,内容为“Nginx是异步框架的网页服务器,也可以用作反向代理、负载平衡器和HTTP缓存。发音同“engine X”。该软件由俄罗斯程序员伊戈…”) |
|||
(未显示同一用户的11个中间版本) | |||
第1行: | 第1行: | ||
Nginx(发音同“engine X”)是一款开源的Web服务器程序,也可以用作反向代理、负载均衡、邮件代理和HTTP缓存。 | |||
==简介== | |||
===时间轴=== | |||
* 2002年,伊戈尔·赛索耶夫(俄语:Игорь Сысоев)开始开发Nginx,最初是为了解决[https://en.wikipedia.org/wiki/C10k_problem C10k]问题和俄罗斯Rambler搜索引擎及其门户网站使用。 | |||
* 2004年10月4日,首次发布初始版本 Nginx 0.1.0 。 | |||
* 2011年,成立一家同名公司,来提供支持和Nginx Plus付费版本。 | |||
* 2019年3月11日,[https://www.f5.com/ F5 Networks]以6.7亿美元收购Nginx公司。 | |||
* 2021年04月20日,发布nginx 1.20.0 版本。 | |||
{{了解更多 | |||
|[http://nginx.org/ Nginx 官网] | |||
|[https://nginx.org/en/CHANGES Nginx:Changes] | |||
|[https://zh.wikipedia.org/zh-cn/Nginx 维基百科:Nginx ] | |||
|[https://en.wikipedia.org/wiki/Nginx 维基百科:Nginx(英) ] | |||
}} | |||
===Nginx与Nginx Plus=== | |||
Nginx Plus是Nginx的付费版本,Nginx Plus在开源Nginx基础上增加了一些功能和服务,如: | |||
* 高级负载平衡 | |||
* 主动健康检查 | |||
* 会话保持 | |||
* 专业的技术支持 | |||
{{了解更多 | |||
|[https://www.nginx.com/products/nginx Nginx Plus官网] | |||
}} | |||
===安装=== | ===安装=== | ||
====预构建包安装==== | |||
Linux中安装开源版nginx: | |||
<syntaxhighlight lang="bash" > | |||
# Ubuntu中 | |||
sudo apt-get update | |||
sudo apt-get install nginx | |||
sudo nginx -v | |||
</syntaxhighlight> | |||
接下来在浏览器访问 http://localhost:8080 可以看到Nginx页面。 | |||
{{了解更多 | |||
|[https://docs.nginx.com/nginx/admin-guide/installing-nginx/installing-nginx-open-source/#installing-prebuilt-ubuntu-packages Nginx Plus文档:安装nginx开源版/使用Ubuntu预构建包] | |||
}} | |||
====Docker安装==== | ====Docker安装==== | ||
使用默认配置启动一个容器,接下来在浏览器访问 http://localhost:8080 可以看到Nginx页面。 | |||
docker run -d --name mynginx -p 8080:80 nginx | |||
将nginx容器内的日志目录、配置目录和网站目录分别映射到主机当前目录nginx文件夹下的log、conf和html | |||
<syntaxhighlight lang="bash"> | |||
docker run -d -p 80:80 --name nginx -v $(pwd)/nginx/log/:/var/log/nginx -v $(pwd)/nginx/conf:/etc/nginx -v $(pwd)/nginx/html/:/usr/share/nginx/html nginx | |||
</syntaxhighlight> | |||
{{了解更多 | |||
|[https://hub.docker.com/_/nginx/ Docker Hub:Nginx] | |||
|[https://docs.nginx.com/nginx/admin-guide/installing-nginx/installing-nginx-docker/ Nginx 文档:使用Docker部署Nginx或Nginx plus] | |||
|[https://www.nginx.com/blog/deploying-nginx-nginx-plus-docker/ Nginx 博客:使用Docker部署Nginx或Nginx plus] | |||
}} | |||
====源代码安装==== | |||
== 快速入门 == | |||
=== Nginx命令 === | |||
{| class="wikitable" style="width: 100%; | |||
! 名称 | |||
! 描述 | |||
|- | |||
| nginx -s signal | |||
|向主进程发送信号,信号参数如下:<br \><code>nginx -s stop</code> 强制关闭<br \> <code>nginx -s quit</code> 正常关闭<br \><code>nginx -s reload</code> 重新加载配置 <br \><code>nginx -s reopen</code> 重新打开日志文件 | |||
|- | |||
| nginx -t <br \>nginx -T | |||
| 检查配置文件是否有语法错误。其中-T还会将配置文件转储到标准输出。 | |||
|- | |||
| nginx -v <br \>nginx -V | |||
| 打印 nginx 版本,其中-V还会输出编译器版本和配置参数。 | |||
|- | |||
|<nowiki>ps aux | grep nginx</nowiki> | |||
| Nginx 进程状态。 | |||
|- | |||
| 关闭或开启nginx | |||
| <syntaxhighlight lang="bash" > | |||
# 停止 Nginx 服务 | |||
sudo systemctl stop nginx | |||
# 禁用 Nginx 服务的自动启动 | |||
sudo systemctl disable nginx | |||
# 启用 Nginx 服务的自动启动 | |||
sudo systemctl enable nginx | |||
# 查看nginx状态 | |||
sudo systemctl status nginx | |||
</syntaxhighlight> | |||
|- | |||
| | |||
| | |||
|- | |||
| | |||
| | |||
|} | |||
{{了解更多 | |||
|[https://nginx.org/en/docs/switches.html Nginx文档:命令行参数] | |||
}} | |||
===Nginx默认目录=== | |||
{| class="wikitable" style="width: 100%; | |||
! 目录 | |||
! 位置 | |||
! 描述 | |||
|- | |||
| 工作目录 | |||
| /etc/nginx | |||
| 存放一些配置文件等,如<code>/etc/nginx/nginx.conf</code>默认配置文件 | |||
|- | |||
| web目录 | |||
| /usr/share/nginx/html/ | |||
| html根目录,在配置文件中查看和设置。 | |||
|- | |||
| 日志目录 | |||
| /var/log/nginx | |||
| | |||
|- | |||
| Nginx软件 | |||
| /usr/sbin/nginx | |||
| 可执行文件 | |||
|- | |||
| 启动文件 | |||
| /etc/init.d/nginx | |||
| | |||
|} | |||
== Nginx配置 == | |||
=== 概览 === | |||
Nginx配置文件是特定格式的文本文件。默认情况下配置文件为<code>nginx.conf</code>,放在<code>/etc/nginx/</code>目录(某些操作系统也可能在<code>/usr/local/nginx/conf</code>或<code>/usr/local/etc/nginx</code>目录)。 | |||
<syntaxhighlight lang='JSON'> | |||
user nginx; | |||
worker_processes auto; | |||
error_log /var/log/nginx/error.log notice; | |||
pid /var/run/nginx.pid; | |||
events { | |||
worker_connections 1024; | |||
} | |||
http { | |||
include /etc/nginx/mime.types; | |||
default_type application/octet-stream; | |||
log_format main '$remote_addr - $remote_user [$time_local] "$request" ' | |||
'$status $body_bytes_sent "$http_referer" ' | |||
'"$http_user_agent" "$http_x_forwarded_for"'; | |||
access_log /var/log/nginx/access.log main; | |||
sendfile on; | |||
#tcp_nopush on; | |||
keepalive_timeout 65; | |||
#gzip on; | |||
include /etc/nginx/conf.d/*.conf; | |||
} | |||
</syntaxhighlight> | |||
{{了解更多 | |||
|[https://docs.nginx.com/nginx/admin-guide/basic-functionality/managing-configuration-files/ Nginx 文档:Creating NGINX Plus and NGINX Configuration Files] | |||
}} | |||
=== 全局配置 === | |||
{{了解更多 | |||
|[https://nginx.org/en/docs/ngx_core_module.html Nginx 文档:核心模块] | |||
}} | |||
== Web服务器 == | |||
{{了解更多 | |||
|[https://docs.nginx.com/nginx/admin-guide/web-server/web-server/ Nginx 文档:将 Nginx 和 Nginx Plus 配置为 Web 服务器] | |||
}} | |||
=== 配置 HTTPS 服务器 === | |||
== 反向代理 == | |||
== 负载均衡 == | |||
== 邮件代理 == | |||
== 日志 == | |||
Nginx 生成了不同类型的日志文件,用于记录服务器的活动和访问情况。 | |||
=== 日志类型 === | |||
常见日志文件如下: | |||
{| class="wikitable" | |||
|- | |||
! 日志名称 | |||
! 描述 | |||
|- | |||
| Access Log <br />访问日志 | |||
| 记录传入请求的详细信息,如来源、资源、状态码等。 默认情况下,访问日志文件位于 /var/log/nginx/access.log。 <br />监视日志文件:<code>tail -f /var/log/nginx/access.log</code> <br />查看日志内容:<code>cat /var/log/nginx/access.log</code> | |||
示例:<code>127.0.0.1 - - [17/Aug/2022:10:12:16 +0000] "GET /index.html" 200 1234 "-" "Mozilla/5.0"</code> | |||
|- | |||
| Error Log | |||
| 记录服务器错误和异常。默认情况下,错误日志文件位于<code>/var/log/nginx/error.log</code>。 <br />监视日志文件:<code>tail -f /var/log/nginx/error.log</code> <br />查看日志内容:<code>cat /var/log/nginx/error.log</code> | |||
示例: <code>2023/08/10 12:23:56 [error] 12345#0: *1 some error message here</code> | |||
|- | |||
| SSL Log | |||
| 记录 SSL 握手和加密通信的信息 | |||
示例:<code>[17/Aug/2022:12:30:56 +0000] 12345#0: *1 SSL handshake started</code> | |||
|- | |||
| 应用程序日志 | |||
| 记录自定义的应用程序信息 | |||
示例:<code>App: Request processed successfully</code> | |||
|- | |||
| 缓存日志 | |||
| 记录缓存命中和未命中的信息 | |||
示例:<code>2023/08/17 11:32:56 [cache] HIT: /image.jpg</code> | |||
|- | |||
| 代理/负载均衡日志 | |||
| 记录代理操作和负载均衡信息 | |||
示例:<code>127.0.0.1 - - [17/Aug/2021:12:22:56 +0000] "GET /api/resource" 200 5678</code> | |||
|} | |||
=== 配置日志 === | |||
==资源== | ==资源== | ||
===官网=== | ===官网=== | ||
* | * Nginx 官网:https://nginx.org/ | ||
*[https:// | * Nginx Plus 官网:https://www.nginx.com/ | ||
*[https://nginx. | * Nginx 文档:https://nginx.org/en/docs/ | ||
*[https:// | * Nginx Plus 文档:https://docs.nginx.com/ | ||
* Nginx Wiki:https://www.nginx.com/resources/wiki/ | |||
* Nginx 源代码:https://hg.nginx.org/nginx | |||
* Nginx 源代码镜像:https://github.com/nginx/nginx | |||
===书籍=== | |||
*[https://tengine.taobao.org/book/index.html 《Nginx开发从入门到精通》] 在线书籍,作者为淘宝核心系统服务器平台组成员 | |||
=== 教程 === | |||
* [https://github.com/dunwu/nginx-tutorial Github.com/dunwu:Nginx 极简教程] | |||
* [https://www.w3cschool.cn/nginx/ w3cschool.cn:Nginx 入门指南] | |||
* [https://learnku.com/articles/46237 LearnKu:北行 - NGINX 从入门到精通,学会这些就够了] | |||
* [https://www.ruanyifeng.com/blog/2018/02/nginx-docker.html 阮一峰:Nginx 容器教程] | |||
== | ===相关网站=== | ||
*[https://zh.wikipedia.org/zh-cn/Nginx 维基百科:Nginx ] | *[https://zh.wikipedia.org/zh-cn/Nginx 维基百科:Nginx ] | ||
[[分类:Web开发]] | [[分类:Web开发]] |
2024年5月2日 (四) 15:50的最新版本
Nginx(发音同“engine X”)是一款开源的Web服务器程序,也可以用作反向代理、负载均衡、邮件代理和HTTP缓存。
简介
时间轴
- 2002年,伊戈尔·赛索耶夫(俄语:Игорь Сысоев)开始开发Nginx,最初是为了解决C10k问题和俄罗斯Rambler搜索引擎及其门户网站使用。
- 2004年10月4日,首次发布初始版本 Nginx 0.1.0 。
- 2011年,成立一家同名公司,来提供支持和Nginx Plus付费版本。
- 2019年3月11日,F5 Networks以6.7亿美元收购Nginx公司。
- 2021年04月20日,发布nginx 1.20.0 版本。
了解更多 >> Nginx 官网 Nginx:Changes 维基百科:Nginx 维基百科:Nginx(英)
Nginx与Nginx Plus
Nginx Plus是Nginx的付费版本,Nginx Plus在开源Nginx基础上增加了一些功能和服务,如:
- 高级负载平衡
- 主动健康检查
- 会话保持
- 专业的技术支持
了解更多 >> Nginx Plus官网
安装
预构建包安装
Linux中安装开源版nginx:
# Ubuntu中
sudo apt-get update
sudo apt-get install nginx
sudo nginx -v
接下来在浏览器访问 http://localhost:8080 可以看到Nginx页面。
Docker安装
使用默认配置启动一个容器,接下来在浏览器访问 http://localhost:8080 可以看到Nginx页面。
docker run -d --name mynginx -p 8080:80 nginx
将nginx容器内的日志目录、配置目录和网站目录分别映射到主机当前目录nginx文件夹下的log、conf和html
docker run -d -p 80:80 --name nginx -v $(pwd)/nginx/log/:/var/log/nginx -v $(pwd)/nginx/conf:/etc/nginx -v $(pwd)/nginx/html/:/usr/share/nginx/html nginx
源代码安装
快速入门
Nginx命令
名称 | 描述 |
---|---|
nginx -s signal | 向主进程发送信号,信号参数如下:nginx -s stop 强制关闭nginx -s quit 正常关闭nginx -s reload 重新加载配置 nginx -s reopen 重新打开日志文件
|
nginx -t nginx -T |
检查配置文件是否有语法错误。其中-T还会将配置文件转储到标准输出。 |
nginx -v nginx -V |
打印 nginx 版本,其中-V还会输出编译器版本和配置参数。 |
ps aux | grep nginx | Nginx 进程状态。 |
关闭或开启nginx | # 停止 Nginx 服务
sudo systemctl stop nginx
# 禁用 Nginx 服务的自动启动
sudo systemctl disable nginx
# 启用 Nginx 服务的自动启动
sudo systemctl enable nginx
# 查看nginx状态
sudo systemctl status nginx
|
了解更多 >> Nginx文档:命令行参数
Nginx默认目录
目录 | 位置 | 描述 |
---|---|---|
工作目录 | /etc/nginx | 存放一些配置文件等,如/etc/nginx/nginx.conf 默认配置文件
|
web目录 | /usr/share/nginx/html/ | html根目录,在配置文件中查看和设置。 |
日志目录 | /var/log/nginx | |
Nginx软件 | /usr/sbin/nginx | 可执行文件 |
启动文件 | /etc/init.d/nginx |
Nginx配置
概览
Nginx配置文件是特定格式的文本文件。默认情况下配置文件为nginx.conf
,放在/etc/nginx/
目录(某些操作系统也可能在/usr/local/nginx/conf
或/usr/local/etc/nginx
目录)。
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log notice;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;
#gzip on;
include /etc/nginx/conf.d/*.conf;
}
全局配置
了解更多 >> Nginx 文档:核心模块
Web服务器
配置 HTTPS 服务器
反向代理
负载均衡
邮件代理
日志
Nginx 生成了不同类型的日志文件,用于记录服务器的活动和访问情况。
日志类型
常见日志文件如下:
日志名称 | 描述 |
---|---|
Access Log 访问日志 |
记录传入请求的详细信息,如来源、资源、状态码等。 默认情况下,访问日志文件位于 /var/log/nginx/access.log。 监视日志文件: tail -f /var/log/nginx/access.log 查看日志内容: cat /var/log/nginx/access.log
示例: |
Error Log | 记录服务器错误和异常。默认情况下,错误日志文件位于/var/log/nginx/error.log 。 监视日志文件: tail -f /var/log/nginx/error.log 查看日志内容: cat /var/log/nginx/error.log
示例: |
SSL Log | 记录 SSL 握手和加密通信的信息
示例: |
应用程序日志 | 记录自定义的应用程序信息
示例: |
缓存日志 | 记录缓存命中和未命中的信息
示例: |
代理/负载均衡日志 | 记录代理操作和负载均衡信息
示例: |
配置日志
资源
官网
- Nginx 官网:https://nginx.org/
- Nginx Plus 官网:https://www.nginx.com/
- Nginx 文档:https://nginx.org/en/docs/
- Nginx Plus 文档:https://docs.nginx.com/
- Nginx Wiki:https://www.nginx.com/resources/wiki/
- Nginx 源代码:https://hg.nginx.org/nginx
- Nginx 源代码镜像:https://github.com/nginx/nginx
书籍
- 《Nginx开发从入门到精通》 在线书籍,作者为淘宝核心系统服务器平台组成员
教程
- Github.com/dunwu:Nginx 极简教程
- w3cschool.cn:Nginx 入门指南
- LearnKu:北行 - NGINX 从入门到精通,学会这些就够了
- 阮一峰:Nginx 容器教程