近来在搭建一个网站,就不可防止地要用到Nginx,索性就出一期Nginx的入门教程,希望也可以帮助到你们~
作为开发者,相信你们都晓得Nginx的重要性。Nginx是一个高性能的HTTP和反向代理Web服务器,由美国的伊戈尔·赛索耶夫开发,第一个版本发布于2004年10月4日。
YYDS
Nginx的特征是:
基于这种特性,越来越多的网站开始使用Nginx。于是,把握Nginx就弄成了开发者的一项必不可少的技能。
一、Nginx的作用
反向代理是Nginx作为Web服务器最常用的功能之一。哪些是反向代理呢?好多初学者在第一次遇见这个名词的时侯总免不了出现好多问号。
那要想搞明白哪些是反向代理,就必须得搞明白哪些是正向代理。
举个反例,小二的浏览器是难以直接访问谷哥的,但台湾的代理服务器是可以访问谷哥的,于是小二访问了台湾的代理服务器,也就间接地访问了谷哥。那这台代理服务器也就是正向代理。
总结一句就是,正向代理是代理顾客端的,让你能正常访问目的服务器。
与之相反,反向代理是代理服务器的,让大量的恳求均衡地访问到某一台服务器上。
举个事例,10万个小二同时在访问,假若只有一台服务器的话,很容易就截瘫了,于是高并发的情况下会有好多台服务器(如果10台吧)来接这个活,那如何让10万个小二访问到这10台服务器呢?
这就须要一个反向代理服务器了,反向代理服务器让1万个小二访问服务器A,1万个小二访问服务器B,1个小二访问服务器C,这样的话,每台服务器的压力就相应减少了,是不是很nice?
那问题来了。每台服务器的能力可能不同,例如劝服务器A的显存比较大一点,有100个G;服务器B的显存小一点,有10个G;服务器C的显存更小一点,只有1个G。如何能够让没台服务器承当起它能力范围内的访问呢?
Nginx外置了寻址和加权转储来达到负载均衡的目的。服务器A牛逼就把它的权重加大一点,让5万个小二访问它;服务器B弱一点,权重就再小一点,让2万个小二访问它;服务器C更弱,权重就最小,让1万个小二访问它。
除此之外,Nginx还有一个很牛逼的功能是动静分离。
在我们的软件开发中,有些请求是须要后台处理的;有些请求是不须要后台处理的,例如说css、js那些文件恳求,这种不须要经过后台处理的文件就叫静态文件。
我们可以依据一些规则,把动态资源和静态资源分开,之后通过Nginx把恳求分开,静态资源的恳求就不须要经过Web服务器处理了,因而提升整体上的资源的响应速率。
二、Nginx的安装
针对不同的操作系统,Nginx的安装各不相同。Windows可以直接到官网下载zip红色安装包,解压后就可以了。
有Linux服务器的话,直接通过这个利器就可以安装了。
不过,假如在安装宝塔面板必备工具包的时侯,假如选择了phpmyadmin(MySQL的管理工具),会覆盖掉80端口linux 虚拟服务器软件,就引起没办法直接通过默认配置的方法访问Nginx启动页面了。
我这儿以macOS环境为例,来演示一下。
第一步,通过brewinfonginx命令查看Nginx是否安装。
第二步,通过brewinstallnginx命令安装Nginx。
从以上信息可以得出:
第三步,通过nginx命令启动Nginx。
第四步,在浏览器地址栏通过localhost:8080访问,可以看见以下欢迎页面。
三、Nginx常用命令
一般来说,Nginx一旦启动后,我们是极少让它退出的,使用最多的就是reload命令。当我们更改了配置文件,是须要执行一次reload命令让Nginx生效的。
nginx 启动
nginx -s stop 停止
nginx -s quit 安全退出
nginx -s reload 重新加载配置文件
ps aux|grep nginx 查看nginx进程
要晓得,Nginx的reload对用户是无感的,这一点我感觉很牛逼~
四、Nginx的配置
我们先来看一下Nginx的配置结布光:
main # 全局配置
├── events # 配置网络连接
├── http # 配置代理、缓存、日志等
│ ├── upstream # 配置负载均衡
│ ├── server # 配置虚拟主机,可以有多个 server
│ ├── server
│ │ ├── location # 用于匹配 URI(URL 是 URI 的一种),可以有多个 location
│ │ ├── location
│ │ └── ...
│ └── ...
└── ...
再把Nginx的默认配置拉下来看一下,我把注释加了进去,这样你们很容易就明白这行配置是拿来干嘛的了。
worker_processes 1; # Nginx 进程数,一般设置为和 CPU 核数一样
events {
worker_connections 1024; # 每个进程允许最大并发数
}
http {
include mime.types; # 文件扩展名与类型映射表
default_type application/octet-stream;
sendfile on; # 开启高效传输模式
keepalive_timeout 65; # 保持连接的时间,也叫超时时间,单位秒
server {
listen 8080; # 配置监听的端口
server_name localhost; # 配置的域名
location / {
root html; # 网站根目录
index index.html index.htm; # 默认首页文件
}
error_page 500 502 503 504 /50x.html; # 默认50x对应的访问页面
location = /50x.html {
root html;
}
}
include servers/*; # 加载子配置项
}
好,如今我们登陆宝塔面板,尝试把默认的server配置复制到Linux服务器中的Nginx配置里。
简单解释一下。
因为我的服务器上80端口是默认打开的,所以我将窃听端口配置成了80,假如你配置成其他端口的话,记得宝塔面板和云服务的安全组里把端口打开。
root我指定了/home/www目录,首页文件为index.html。这个文件是我自定义的,来看一下内容。
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
沉默王二
"niubi.jpeg" />
很言简意赅,其实就是三哥,牛逼~
好,保存配置文件,但是reloadNginx,我们在本地的浏览器中输入服务器的IP地址就可以看见疗效了。
五、Nginx的学习资料
关于Nginx的负载均衡,还有动静分离,等到三哥的网站跑上去后,可以专门搞个视频给你们演示下,比较直观一点。Nginx的入门十分简单,但有一说一,倘若想要在工作中用好Nginx,还是须要耗费一番工夫的。
我这儿再给你们推荐一些不错的学习资料吧。
1)狂神说的视频入门教程,我个人认为,狂神的入门教程还是十分舒适的,语速和内容都刚才好。
2)黑马程序员Nginx教程,总共159讲,基本上算是十分全面的Nginx的视频教程了。
3)极客时间上的Nginx100讲,讲的比较深一点,涉及到不少原理层面的东西。皮夹比较鼓的话,可以去付费下。不过,据说在某个地方也可以白票。
4)Nginx从入门到实践,万字解读linux 虚拟服务器软件,图文版的,可以到鹈鹕上瞧瞧这篇文章,内容基本上边面俱到了(可以看一下下边的目录),配合后面的视频课嵌入式linux 培训linux deepin,拿下Nginx基本上是稳了。
这种资料假如能全部过一遍的话,我要喊你Nginx小王子了,恐怕公司遇见Nginx问题的话,你肯定是解决问题的那一个。
---EOF---
推荐↓↓↓