​​​

Nginx("engine x") 是一个高性能的 HTTP 和 ​​反向代理​​ 服务器,也是一个 IMAP/POP3/SMTP ​​代理服务器​​ 。 Nginx 是由 ​​Igor Sysoev​​ 为俄罗斯访问量第二的​​Rambler.ru​​ 站点开发的,它已经在该站点运行超过四年多了。Igor 将源代码以类BSD许可证的形式发布。自Nginx 发布四年来,Nginx 已经因为它的稳定性、丰富的功能集、 示例配置文件和低系统资源的消耗而闻名了。目前国内各大门户网站已经部署了Nginx,如新浪、网易、腾讯等;国内几个重要的视频分享网站也部署了Nginx,如六房间、酷6等。 新近发现Nginx 技术在国内日趋火热,越来越多的网站开始部署Nginx。 反向代理

  1. 反向代理(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 在 Windows下的安装_服务器

************************ 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 在 Windows下的安装_html_02

Nginx 在 Windows下的安装_服务器_03

其中一个为主进程,另外一个是工作进程。如果nginx无法启动,可以在错误日志文件logs\error.log里查看原因。如果日志文件已经被创建,错误原因可以在Windows事件日志里查看。如果显示的是错误页面而不是期望的页面,也可以在logs\error.log文件里查看原因。


在浏览器地址栏输入:127.0.0.1,会看到如下图所示的nginx欢迎界面

Nginx 在 Windows下的安装_html_04


Windows下nginx以标准控制台程序运行(不是服务),而且可以通过以下命令管理:


  • nginx -s stop 立即关闭
  • nginx -s quit 正常关闭
  • nginx -s reload 修改配置,用新的配置启动新的工作进程,正常关闭旧的工作进程
  • nginx -s reopen 重新打开日志文件

注:以上的命令中,.exe可以去掉,相应命令的操作如下图所示:

Nginx 在 Windows下的安装_html_05

帮助查看

Nginx 在 Windows下的安装_nginx_06

已知问题


  • 尽管可以启动多个工作进程,但是实际只有其中一个工作。
  • 一个工作进程可以同时处理不多于1024个连接。
  • 需要共享内存支持的cache模块和其他模块在Windows Vista以及更高版本下无法工作,因为在这些Windows版本中启用了地址空间布局随机化。

未来可能的改进


  • 以服务运行
  • 使用I/O完成端口作为连接处理方法
  • 在单个工作进程里使用多个工作线程

nginx虽小,但是用途惊人