Nginx 入门指南:理解、配置和优化
本文最后更新于:9 个月前
破冰
🥣 推荐阅读:
Nginx 是什么
1 |
|
Nginx 的应⽤场景⾮常⼴泛,以下是其中的⼏个:
Web 服务器:Nginx 可以作为 HTTP 服务器,处理并发的静态请求和动态请求,并且可 以⽀持负载均衡和缓存,为⽹站提供⾼性能和⾼可⽤性。
反向代理服务器:Nginx 可以作为反向代理服务器,接收客户端请求并将其转发到后端服 务器,同时也可以⽀持负载均衡和缓存。
邮件代理服务器:Nginx 可以作为邮件代理服务器,⽀持 POP3、IMAP 和 SMTP 协议, 并且可以⽀持 SSL/TLS 加密和反垃圾邮件功能。
流媒体服务器:Nginx 可以作为流媒体服务器,⽀持 RTMP、HLS 和 DASH 协议,可以 ⽤于实现直播、点播和视频-on-demand(VoD)等场景。
总之,Nginx 具有⾼性能、可扩展性和可靠性等特点,被⼴泛应⽤于⼤型⽹站、互联⽹公司、 云计算、视频流媒体、游戏等领域
思维碰撞
Nginx 部署静态站点(2024 最新)
2024 年 6 月 3 日
Nginx 安装
这里推荐宝塔面板安装,一条龙完成:
安装宝塔面板:
访问宝塔面板:
1 |
|
一键编译安装:
记得查看默认访问端口,宝塔面板安装下的 nginx 默认是 888 端口,云服务器也要开放 888 端口
搞完了直接访问就行。
尝试部署静态页面
接下来就是四十八小时时间里的踩坑记录,仅供参照:
2024 年 6 月 1 日
【一篇学会】Nginx 静态资源部署保姆级教程_nginx 部署静态资源-CSDN 博客
Nginx 静态资源服务的配置-腾讯云开发者社区-腾讯云 (tencent.com)
1 |
|
8 分钟用 Nginx 搭建一个自己的网站_哔哩哔哩_bilibili
Linux 使用 nginx 部署静态网页 - WindSnowLi - 博客园 (cnblogs.com)
手把手教你搭建静态/博客网站 | 起凡 Code 闲聊 (jarcheng.top)
跟着网上的教程搞了一下午,就是部署不了静态页面,甚至连访问 Nginx 本身都好像有问题,搞不明白,实在是搞不明白。
不管怎么说,今晚我就死磕这个 Nginx 了,多少个晚上都像现在这样把它放过,所以到现在都没有学习完成过 Nginx。
2024 年 6 月 2 日
[root@iZ2ze4yceifsrmdejokfymZ ~]# nginx
nginx: [emerg] bind() to 0.0.0.0:7010 failed (98: Unknown error)
nginx: [emerg] bind() to 0.0.0.0:888 failed (98: Unknown error)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Unknown error)
nginx: [emerg] bind() to 0.0.0.0:7071 failed (98: Unknown error)
nginx: [emerg] bind() to 0.0.0.0:7001 failed (98: Unknown error)
nginx: [emerg] bind() to 0.0.0.0:7020 failed (98: Unknown error)
nginx: [emerg] bind() to 0.0.0.0:7010 failed (98: Unknown error)
nginx: [emerg] bind() to 0.0.0.0:888 failed (98: Unknown error)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Unknown error)
nginx: [emerg] bind() to 0.0.0.0:7071 failed (98: Unknown error)
nginx: [emerg] bind() to 0.0.0.0:7001 failed (98: Unknown error)
nginx: [emerg] bind() to 0.0.0.0:7020 failed (98: Unknown error)
nginx: [emerg] bind() to 0.0.0.0:7010 failed (98: Unknown error)
nginx: [emerg] bind() to 0.0.0.0:888 failed (98: Unknown error)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Unknown error)
nginx: [emerg] bind() to 0.0.0.0:7071 failed (98: Unknown error)
nginx: [emerg] bind() to 0.0.0.0:7001 failed (98: Unknown error)
nginx: [emerg] bind() to 0.0.0.0:7020 failed (98: Unknown error)
nginx: [emerg] bind() to 0.0.0.0:7010 failed (98: Unknown error)
nginx: [emerg] bind() to 0.0.0.0:888 failed (98: Unknown error)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Unknown error)
nginx: [emerg] bind() to 0.0.0.0:7071 failed (98: Unknown error)
nginx: [emerg] bind() to 0.0.0.0:7001 failed (98: Unknown error)
nginx: [emerg] bind() to 0.0.0.0:7020 failed (98: Unknown error)
nginx: [emerg] bind() to 0.0.0.0:7010 failed (98: Unknown error)
nginx: [emerg] bind() to 0.0.0.0:888 failed (98: Unknown error)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Unknown error)
nginx: [emerg] bind() to 0.0.0.0:7071 failed (98: Unknown error)
nginx: [emerg] bind() to 0.0.0.0:7001 failed (98: Unknown error)
nginx: [emerg] bind() to 0.0.0.0:7020 failed (98: Unknown error)
nginx: [emerg] still could not bind()
[Nginx 重启时提示”nginx: emerg] bind() to 0.0.0.0”解决方法 - 八艾云 (8a.hk)
极简 Nginx 学习 + 使用,点到为止 - 编程导航文章 (code-nav.cn)
1 |
|
netstat -tulnp | grep 7010
我已经尝试了所有方法,查看冲突端口号、关闭防火墙,修改执行用户,更改文件目录权限,根本部署不了静态页面
3 分钟搞懂阿里云服务器安装 Nginx 并配置静态访问页面_阿里云服务器如何安装 nginx-CSDN 博客
[nginx: error] invalid PID number “” in “/usr/local/webserver/nginx/logs/nginx.pid”-CSDN 博客
1 |
|
搞不定,一夜回到解放前。
Nginx 部署与静态 html_nginx 部署 html-CSDN 博客
【Linux 报错】登陆 mysql 用户报错 This account is currently not available._mysql:x:1001:-CSDN 博客
2024 年 6 月 3 日
Linux 实现 Nginx 的安装与部署并实现 html 静态资源访问_linux nginx html-CSDN 博客
1 |
|
1 |
|
1 |
|
1 |
|
1 |
|
1 |
|
1 |
|
1 |
|
nginx 服务器搭建好但是浏览器却无法访问原因排查_nginx 配置好了 网站还是访问不了-CSDN 博客
这几天里报错最恶心的还是这条:
1 |
|
最后是在宝塔面板卸载重装以后才解决的,现在也不知道什么原因。
还是很有收获的,学到了许多其他新知识。
2024 年 6 月 4 日
linux 怎么快速卸载并安装 node 环境 - Jun_ct - 博客园 (cnblogs.com)
yum、apt-get、wget 的区别_yum wget-CSDN 博客
wget、yum、rpm、apt-get 区别「建议收藏」-腾讯云开发者社区-腾讯云 (tencent.com)
云服务器部署静态博客站点,搞了一上午,代码推送不上去,Nginx 也起不来了。
运维排查篇 | 访问 nginx 出现 403 错误 - 知乎 (zhihu.com)
过了一个小时再尝试,静态代码文件就能推送上去了。杀死已经启动的 Nginx 进程,也能成功启动 Nginx 了。
问题解决
2024 年 6 月 3 日
查看本实例的安全组,应用了哪个安全组规则:
以下这就是应用到的真正的安全组规则(注意上方地域选择):
这几天以来,一直选错了地域,搞另一个地域下的安全组规则。原来根本就没放开 80、7010、7020 端口:
重启失败
2024 年 6 月 4 日
这个报错直接杀死正在运行的 Nginx 进程就可以了。
访问 403 错误
2024 年 6 月 4 日
🥣 推荐阅读:运维排查篇 | 访问 nginx 出现 403 错误 - 知乎 (zhihu.com)
一条龙
2024 年 6 月 3 日
🥣 安装 Nginx 并部署静态页面,看这篇博客:服务器——Nginx 安装及静态配置、部署 - 知乎 (zhihu.com)
🍚 解决 Nginx 访问失败问题,看这篇博客:nginx 服务器搭建好但是浏览器却无法访问原因排查_nginx 配置好了 网站还是访问不了-CSDN 博客
1 |
|
1 |
|
使用 Nginx 部署 博客站点,看:
CPU 爆满
2024 年 6 月 21 日
最近一周云服务器 CPU 负载一直很高,经常在 80%左右,博客访问都卡的根本打不开。
Nginx 性能优化_nginx cpu 负载高-CSDN 博客
清除 nginx 连接数 TIME_WAIT_nginx 连接数满了-CSDN 博客
如何查看 Linux 系统 I/O 负载情况_云服务器 ECS(ECS)-阿里云帮助中心 (aliyun.com)
云服务器一直提示达到云盘类型的 IOPS 上限_读写 io 延迟过长,或达到了该云盘类型的 iops 上限,导致实例云盘读写受限-CSDN 博客
swappiness 的基本默认设置为 60,加上生效这样便完成修改设置 | 《Linux 就该这么学》 (linuxprobe.com)
我又重启了服务器实例,试了下上面的方法,看看是否有效。
半个小时过去了,好像问题还真的解决了:
2024 年 7 月 4 日
2024 年 7 月 8 日
还是老问题:
服务器的 CPU 一直负载很高,监控告警也提示:
当前实例的云盘在 2024 年 7 月 4 日 09:43:00 出现读写 I0 延迟过长,或达到了该云盘类型的 I0PS 上限,导致实例云盘读写受限。
想要远程连接排查问题,Workbench 远程连接服务器又提示已禁用账号密码登录。
改用 VNC 远程连接,进去后没有任何反应,只能胡乱敲字母。
CPU 负载解决不了,部署在服务器上的博客也访问不到。
Linux(CentOS)网络流量实时监控(iftop)安装教程——含 yum 命令安装失败方法_centos iftop-CSDN 博客
2024 年 7 月 9 日
AtomGit Pages 服务下的博客是 HTTPS 协议的,七牛云存储空间绑定的域名目前没有部署 SSL 证书,仅支持 HTTP 协议。
这图片还显示不了了。
又打回了云服务器部署博客的注意,今天早上 CPU 都爆满到 90% 了,肯定出问题了。
拒绝服务漏洞?这不就是问题的原因所在吗,摆明了在这我都没想过这个问题。。
按量付费,一次两块钱,我试试看。
晚上,睡觉前:
Nodejs 安装
2024 年 6 月 3 日
linux 安装 nodejs yum
在 Linux 系统中,您可以使用 Yum 包管理器来安装 Node.js。以下是一个基本的步骤和示例代码,用于通过 Yum 安装 Node.js:
- 首先,您需要确保您的系统中已经安装了 Node.js 的官方 Yum 仓库。如果尚未安装,您可以通过运行以下命令来添加 Node.js 的仓库:
1 |
|
这个命令会将 Node.js 14.x 的仓库添加到您的系统中。如果您想安装其他版本的 Node.js,只需将setup_14.x
中的数字更改为所需的 Node.js 版本即可。
- 接下来,您可以使用 Yum 安装 Node.js:
1 |
|
这个命令会从刚才添加的 Node.js 仓库中安装 Node.js。
- 安装完成后,您可以检查 Node.js 的版本确保安装成功:
1 |
|
请注意,上述命令中的 URL 和版本号可能会随着 Node.js 版本更新而变化,请参照 Node.js 官方文档或者 NodeSource 提供的最新安装脚本。
部署
看过了上面的一条龙 Nginx 部署静态站点服务后,基本上搞定了所有 Nginx 问题
Nginx 安装
2024 年 6 月 9 日
注意,这里还是上面提到的那篇博文内容,感觉还是把详细步骤记录下来比较好:
安装 Nginx 步骤
有两种安装 Nginx 方法:
一种是快速安装,直接执行下面代码即可:
1 |
|
另一种是设置 nginx.repo 源安装,我们推荐使用设置 nginx.repo 源安装,具体步骤如下所示:
安装 yum-utils
在安装之前,首先要安装 yum-utils,执行如下代码:
1 |
|
配置 nginx.repo 源
首先在/etc/yum.repos.d 目录下创建 nginx.repo 文件,执行如下代码:
1 |
|
在 nginx.repo 文件中写入以下代码:
1 |
|
写入文件后,保存并退出,执行如下代码查看是否加载了 Nginx 安装源:
1 |
|
安装 nginx
安装 nginx 执行如下代码即可安装:
1 |
|
系统启动 nginx 服务器
在系统管理中,我们可以执行如下代码启动 nginx 服务器:
1 |
|
如下图所示:
这样就启动了 nginx 服务器,我们进入浏览器并输入公网 id 即可看到如下页面:
假如没能成功显示该页面,则需要在云服务器开放 80 端口。
nginx.conf 配置
为什么输入本机的 IP 地址就会显示上面的网页呢,带着疑问,我们来看看 Nginx 的配置文件,nginx 默认的配置文件 nginx.conf 的目录为:/etc/nginx/nginx.conf,也可以执行如下代码找出 nginx.conf 的位置:
1 |
|
如下图所示:
找到 nginx.conf 配置文件路径后,进入 nginx.conf 配置文件:
1 |
|
其内容如下所示:
1 |
|
我们在 nginx.conf 配置文件中没有找到呈现刚才网页直接相关的代码,只有一个辅助配置文件,那么我们执行如下代码进入复制配置文件目录:
1 |
|
发现只有一个名为 default.conf 的配置文件,执行如下代码进入 default.conf 辅助配置文件:
1 |
|
其内容如下所示:
1 |
|
在辅助配置文件中,我们找到了网页项目文件相关的代码,我们进入/usr/share/nginx/html 项目路径,执行如下代码:
1 |
|
打开 index.html,发现其内容正是我们刚才公网 id 访问浏览器显示的内容。
也就是说,只要我们修改 default.conf 配置文件中的项目路径改为我们项目的路径,即可把我们的项目放在服务器上面了,但是一般情况下,我们都不会去修改 nginx 原来的 default.conf 配置文件,一般会通过使用自定义的配置文件来启动 nginx 服务。
关闭 nginx 服务器
当我们使用系统管理来启动 nginx 服务器时,需要系统管理来关闭 nginx 服务器,执行如下代码:
1 |
|
可以根据需求执行如下代码:
1 |
|
配置文件启动 nginx 服务
在使用系统管理启动 nginx 服务时,浏览器访问自身的 IP 地址呈现的是一个欢迎使用 nginx 服务的网页,要想浏览器访问自身的 IP 地址呈现的是其他网页时,需要修改其辅助配置文件 default.conf,但一般情况下,我们不会去修改 nginx 原来的 default.conf 配置文件,那么怎么启动 nginx 服务器让浏览器访问自身 IP 地址呈现其他网页呢?
这时我们可以自己编写一个 nginx 配置文件 mynginx.conf(配置文件名可以随意),执行以下代码来启动 nginx 服务:
1 |
|
配置文件编写
那么问题来了,如何编写 nginx 配置文件呢?首先系统管理启动 nginx 服务涉及了两个配置文件——nginx.conf 和 default.conf,其中控制网页内容的呈现相关的是 default.conf 配置文件,而 nginx.conf 是一些日志、错误等一些文件配置,所以我们只需要把 nginx.conf 配置文件和 default.conf 配置文件的内容复制在自己编写的 mynginx.conf 配置文件即可,复制代码后,我们通过增删改查,最终得出以下代码:
1 |
|
修改的地方我们已经在代码中注释了,好了,通过简单的修改复制的代码,我们成功编写了自己的 nginx 配置文件 mynginx.conf,我们将配置文件放在 Flask 程序根目录中。
Flask 程序如下所示:
1 |
|
启动 nginx 服务
好了,配置文件已经写好了,执行如下代码启动 nginx 服务:
1 |
|
这样我们就启动了自己编写的 nginx 配置文件,如下图所示:
浏览器访问http://ip:port,这里我们设置的端口号为 6789,如下图所示:
关闭 nginx 服务
通过配置文件启动 nginx 服务,需要执行如下代码关闭 nginx 服务:
1 |
|
好了,服务器——Nginx 安装及 Nginx 静态配置、部署就讲到这里了。
Nginx 简介和安装
简介
这篇关于 Nginx 的介绍是我看过最详细的了:Nginx 学习-KuangStudy-文章
这里我就不详细展开说了,网上的资料对 Nginx 都有着详尽的介绍,我仅依照自己的理解,给出我对 Nginx 的认识:
Nginx 是一个高性能的 HTTP 和反向代理 web 服务器,它的特点是负载均衡、反向代理
安装
windows 安装
Nginx 官网下载:nginx: download
只需在官网下载安装包,在本地解压即可
本地 Linux 原始安装
手动安装并手动配置是很繁琐的,不过操作一遍确实很能巩固 Linux 命令,这里给出详细的安装教程:
Nginx 官网下载:nginx: download
教程一:Nginx 安装下载-KuangStudy-文章
教程二:(67 条消息) Nginx 安装及其常用命令(实操版)nginx 安装命令叫我 默语的博客-CSDN 博客
教程三:(67 条消息) yum 安装 nginx_yum 安装 nginx_q495673918 的博客-CSDN 博客
将来有空的话,我会补充这里的手动安装实操流程(宝塔一键安装真的太便捷了)
宝塔 Linux 一键安装

服务启停
1 |
|
1 |
|
1 |
|
1 |
|
1 |
|
1 |
|
1 |
|
1 |
|
配置文件
🔥 推荐阅读:
深入理解 Nginx 配置文件:语法、块和常用指令
介绍下 Nginx 目录结构和配置文件的内容:
(67 条消息) Nginx - 目录结构与配置文件详解nginx 目录不会调制解调的猫的博客-CSDN 博客
Nginx 的配置文件详解-KuangStudy-文章
反向代理和负载均衡
1 |
|
1 |
|
1 |
|
可以看到,我们开启了 Nginx 服务,只需访问 Nginx 给我们开放的端口,就能够访问到对应服务器,获取页面数据
这是因为 Nginx 将我们的请求转发给了服务器,而用户是无感知的,这就是 Nginx 反向代理
静态网站部署
HTTPS 配置
虚拟主机
踩坑经历
访问 Nginx403 错误
运维排查篇 | 访问 nginx 出现 403 错误 - 知乎 (zhihu.com)
详解 Nginx 出现 403Forbidden 的解决办法 - 第一 PHP 社区 (php1.cn)
四种解决 Nginx 出现 403 forbidden 报错的方法 (baidu.com)
先是看了很多解决办法(以上),虽然没有解决,但丰富了我对 Nginx 配置的理解
然后我想到看错误日志,但查看配置发现默认没开启,那就开启错误日志:
错误日志路径:



接着看这个解决思路:(67 条消息) 报错:directory index of “xxx“ is forbidden_directory index of is forbidden_AI 人工智能与大数据的博客-CSDN 博客
添加这行配置:
