Nginx 入门指南:理解、配置和优化
本文最后更新于:17 天前
破冰
🥣 推荐阅读:
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连接数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博客
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 |
|
静态网站部署
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博客
添加这行配置:
