最近在学习nginx的反向代理和负载均衡的运用时,觉得挺简单的,但是还是想写一篇博客用于记录自己的学习过程。
好的,我们进入正题
Nginx(engine x) 是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器。
其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。
引入眼帘就是各种的专业名词,虽然我并不太了解这些专业名词说包含的意义和具体使用,但就我目前而言,只要能学会使用Nginx实现反向代理技术,就已经足够了。
Nginx是一个特别轻量级的反向代理服务器,整个软件包3M多一点,却可以支撑起高达 50,000 个并发连接数的响应,感谢Nginx为我们选择了 epoll and kqueue作为开发模型。
Nginx作为负载均衡服务器:Nginx 既可以在内部直接支持 Rails 和 PHP 程序对外进行服务,也可以支持作为 HTTP代理服务器对外进行服务。Nginx采用C进行编写,
不论是系统资源开销还是CPU使用效率都比 Perlbal 要好很多。处理静态文件,索引文件以及自动索引;打开文件描述符缓冲。无缓存的反向代理加速,简单的负载均衡和容错。
FastCGI,简单的负载均衡和容错。
接下来,让我们来简单了解一下Nginx的简单用法:
首先我们需要下载一个Nginx的软件包,这里我使用的是nginx-1.9.0版本的软件包,解压出来以后,是这个样子的:
conf:配置文件所在的文件夹(存放着Nginx的一堆配置文件)
html:Nginx的自带首页文件夹(存放着Nginx的index.html和50x.html)
logs:Nginx的日子文件夹(在启动失败的时候会生成error.log,启动成功以后会生成一个存放着Nginx启动时获得的pid的PID文件)
目前主要用到的文件夹基本就这么几个。
这里说一下我的需求:
我有一个测试项目,里面有用到文件上传组件,文件上传以后存放在本地的F:盘下,我想通过访问一个类似域名的形式,请求到文件,具体需求就是这样。
首先:文件在上传到本地时的路径是:F:\demo\demo-upload\年\月\日\时\
存入到数据库中的部分为:年\月\日\时\*****文件名
虚拟地址为:image.demo.com
接下来我们来实现这个小功能:
1.首先,我们需要配置Nginx的conf目录下的nginx.conf
让我们先来看看nginx.conf文件长啥样
主要的配置需要在http这对大括号中来编写
我们在http大括号中写入上面的配置
server表示服务的意思,listen代表监听的端口,location表示需要转向的参数 root表示本地文件系统
编写了上面的配置之后,我们的需求已经快完成了。
接下来,我们还需要修改hosts文件中的hosts域名
hosts文件存放在WINDOWS文件系统的:C:\Windows\System32\drivers\etc 目录下
我们在hosts文件中加入我们的虚拟路径,指向本地IP
127.0.0.1 image.demo.com 然后把文件保存
接下来我们就可以开始启动Nginx了
首先 我们进入到Nginx的根目录,也就是能看到Nginx.exe那一层文件夹
然后双击运行.exe文件
我们也可以使用cmd命令行来启动Nginx 我们需要切换到Nginx的根目录下,然后输入指令:start nginx 然后回车
如何验证Nginx是否成功启动?
我们打开浏览器,地址栏输入:http://localhost:80 如果出现以下页面,就代表你的Nginx已经成功启动了
如果显示的是其他的内容,说明启动可能出错了,那我们就需要找启动失败的原因了,我们切换到Nginx根目录下的logs文件夹中
有一个error.log文件,打开它 出现如下错误信息:
2019/04/26 09:59:03 [emerg] 16136#10460: bind() to 0.0.0.0:80 failed (10013: An attempt was made to access a socket in a way forbidden by its access permissions)
该错误信息描述的是:80端口被占用了
这个时候 我们就需要去看一下 是哪个应用在占用我的80端口
打开cmd输入:netstat -ano 可以看到被监听端口的使用信息:
我这里是被 ssl(internet infomation services) 把80端口占用了,我们去找一下这个服务,去把它安排一下。
此电脑>右键属性>控制面板主页>程序>启用或关闭windows功能 >找到ssl 把前面的框取消勾选
好的 我们再来试一下
进入命令行,切换到Nginx的根目录下 输入 start nginx 回车 窗口一闪而过,好的 验证一下
浏览器地址栏输入:http://localhost:80,启动成功了
然后我在浏览器中输入我的虚拟路径:http://image.demo.com/****/**/**/**/*******.jpg
成功出现了我上传的图片,到此,简单的反向代理已经实现了。
这是我的第一篇博客,记录的是很简单的一个Nginx反向代理的初级应用技术,在不久的下一篇中,我会记录我学习Nginx实现负载均衡的初级应用。
学习是一个慢慢 积累、沉淀 的过程