怎样在windows上搭建nginx服务器

因为要在自己电脑(windows)上搭建一个流媒体服务器,使用nginx-rtmt搭建。所以得先在本地搭建nginx服务。 参考了nginx的官方文档,整理了一些遇到的问题,顺便翻译了一下nginx的windows版本的安装文档。
原文链接: http://nginx.org/en/docs/windows.html

Windows版本的nginx用的是 win32的api(不是使用Cygwin中间层). 目前只使用了 select()连接处理方法。 所以不用期望高性能和高扩展性。由于这个原因和一些已知问题,windows版本的nginx是考虑作为一个beta版本。 到现在为止,它提供了几乎和UNIX版本同样的功能,除了XSLT过滤器,图片过滤器,GeoIP模块和嵌入式Perl语言。

安装windows版本的nginx,首先下载nginx最新的版本(1.13.0),因为这个主分支的nginx版本修复了所有的已知问题。然后解压这个文件,然后切换到nginx-1.13.0目录下, 然后运行 nginx.ext(双击),例下:

cd c:\
unzip nginx-1.13.0.zip
cd nginx-1.13.0
start nginx

运行 tasklist命令,来查看nginx 进程

C:\nginx-1.13.0>tasklist /fi "imagename eq nginx.exe"

Image Name           PID Session Name     Session#    Mem Usage
=============== ======== ============== ========== ============
nginx.exe            652 Console                 0      2 780 K
nginx.exe           1332 Console                 0      3 112 K

这两个进程中一个是主进程,一个是工作进程。如果nginx没有启动,可以到logs/error.log下面去找原因。 如果这log 文件没有生成,问题的原因可能是报告在window的Event log里面了。 如果输入命令出现的是一个错误页面,同样的去logs/error.log下面去找原因。

在我的电脑运行nginx.exe,然后在命令行输入tasklist 命令报错,我在logs/error.log下面找到这个日志。 这表示启动服务器时绑定80端口报错。

2017/05/24 10:24:15 [emerg] 7008#13824: 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)

解决方案是:修改绑定的端口,找到conf/nginx.conf文件修改绑定的端口。

 server {
        listen       80; ///修改这个端口为8087,这个端口可以任意指定,只要没有被绑定过。
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            root   html;
            index  index.html index.htm;
        }
        ....

然后重新运行nginx.exe,在浏览器输入 http://localhost:8087(8087为你刚才指定的端口),出现这个页面表示你本地的nginx服务安装成功了。

怎样在windows上搭建nginx服务器_第1张图片
微信截图_20170524141353.png

windows版本的nginx用当前运行目录作为默认的配置的文件的前缀。例如上面的那个例子: 前缀为*C:\nginx-1.13.0* 。配置文件中的路径必须用UNIX风格的斜杠指定。

access_log   logs/site.log;
root         C:/web/html;

windows版本的nginx是作为一个标准的控制台应用运行的(不是一个服务)。他们用下面这些命令去管理:

nginx -s stop   快速关闭
nginx -s quit   正常关闭
nginx -s 修改配置文件后,重新打开一个新的工作进程并正常关闭之前的工作
nginx -s reopen 重新打开log文件

已知问题

  • 虽然可以同时启动多个工作进程,但是只有一个工作进程在真正处理所有的工作。
  • 一个工作进程不能同时处理超过1024个连接
  • 不支持UDP代理功能

未来可能的改进

  • 作为一个服务运行
  • 使用新完成的的I/O接口作为连接进程方法
  • 一个工作进程里面使用多个线程

你可能感兴趣的:(怎样在windows上搭建nginx服务器)