Nginx("engine x") 是一个高性能的 HTTP 和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器 。 Nginx 是由 Igor Sysoev 为俄罗斯访问量第二的Rambler.ru 站点开发的,它已经在该站点运行超过四年多了。Igor 将源代码以类BSD许可证的形式发布。自Nginx 发布四年来,Nginx 已经因为它的稳定性、丰富的功能集、 示例配置文件和低系统资源的消耗而闻名了。目前国内各大门户网站已经部署了Nginx,如新浪、网易、腾讯等;国内几个重要的视频分享网站也部署了Nginx,如六房间、酷6等。 新近发现Nginx 技术在国内日趋火热,越来越多的网站开始部署Nginx。
反向代理
反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器。
这里讲得很直白。反向代理方式实际上就是一台负责转发的代理 服务器,貌似充当了真正服务器的功能,但实际上并不是,代理服务器只是充当了转发的作用,并且从真正的服务器那里取得返回的数据。这样说,其实nginx 完成的就是这样的工作。我们让nginx监听一个端口,譬如80端口,但实际上我们转发给在8080端口的tomcat,由它来处理真正的请求,当请求完 成后,tomcat返回,但数据此时没直接返回,而是直接给nginx,由nginx进行返回,这里,我们会以为是nginx进行了处理,但实际上进行处 理的是tomcat。
说到上面的方式,也许很多人又会想起来,这样可以把静态文件交由nginx来进行处理。对,很多用到nginx的地方都是作为静态伺服器,这样可以方便缓存那些静态文件,比如CSS,JS,html,htm等文件。
Windows中的配置安装测试
到nginx官网上下载相应的安装包,http://nginx.org/en/download.html;下载进行解压,将解压后的文件放到自己心仪的目录下,我这里使用的nginx版本为nginx-1.9.0,目录结构如下:
************************ nginx-1.9.0 ********************* conf 配置目录 |—————— fastcgi.conf |—————— fastcgi_params 与php相关 |—————— koi-utf |—————— koi-win |—————— mime.types mime类型配置文件 |—————— nginx.conf 主配置文件 |—————— scgi_params |—————— uwsgi_params 与python相关 |—————— win-utf contrib |—————— unicode2nginx |——————|—————— koi-utf |——————|—————— unicode-to-nginx.pl |——————|—————— win-utf |—————— vim |——————|—————— ftdetect |——————|——————|—————— nginx.vim |——————|—————— indent |——————|——————|—————— nginx.vim |——————|—————— syntax |——————|——————|—————— nginx.vim |—————— geo2nginx.pl |—————— README docs 文档 |—————— CHANGES |—————— CHANGES.ru |—————— LICENSE |—————— OpenSSL.LICENSE |—————— PCRE.LICENCE |—————— README |—————— zlib.LICENSE html 存放网页代码的空间地址,静态页面 |—————— 50x.html |—————— index.html logs 日志 |—————— access.log |—————— error.log |—————— ... temp 临时文件 |—————— client_body_temp |—————— fastcgi_temp |—————— proxy_temp |—————— scgi_temp |—————— uwsgi_temp nginx.exe 执行文件
进入window的cmd窗口,输入如下图所示的命令,进入到nginx目录,使用“start nginx.exe ”进行nginx的启动,或者直接双击nginx.exe启动,这里也许你会看到一个窗口一闪而过,根据我们使用tomcat的经验,如果一闪而过,证明有错误了,是吧?但实际上不是。
E:\>cd E:\Workspaces\Service\nginx-1.9.0 E:\Workspaces\Service\nginx-1.9.0>start nginx.exe E:\Workspaces\Service\nginx-1.9.0>
在“任务管理器”中查看“nginx.exe”进程,也可以运行tasklist命令行组件来查看nginx进程:
其中一个为主进程,另外一个是工作进程。如果nginx无法启动,可以在错误日志文件logs\error.log里查看原因。如果日志文件已经被创建,错误原因可以在Windows事件日志里查看。如果显示的是错误页面而不是期望的页面,也可以在logs\error.log文件里查看原因。
在浏览器地址栏输入:127.0.0.1,会看到如下图所示的nginx欢迎界面
Windows下nginx以标准控制台程序运行(不是服务),而且可以通过以下命令管理:
nginx -s stop 立即关闭
nginx -s quit 正常关闭
nginx -s reload 修改配置,用新的配置启动新的工作进程,正常关闭旧的工作进程
nginx -s reopen 重新打开日志文件
注:以上的命令中,.exe可以去掉,相应命令的操作如下图所示:
帮助查看
已知问题
尽管可以启动多个工作进程,但是实际只有其中一个工作。
一个工作进程可以同时处理不多于1024个连接。
需要共享内存支持的cache模块和其他模块在Windows Vista以及更高版本下无法工作,因为在这些Windows版本中启用了地址空间布局随机化。
未来可能的改进
以服务运行
使用I/O完成端口作为连接处理方法
在单个工作进程里使用多个工作线程
nginx虽小,但是用途惊人