本文由秀依林枫提供友情赞助,首发于烂泥行天下。
前几篇文章,我们使用nginx都是在linux环境下,今天由于工作的需要。需要在windows环境也使用nginx搭建web服务器。
下面记录下有关nginx下的搭建与配置。
注意本次实验使用的windows server 2003 64bit,而且还是在虚拟机中。IP地址为192.168.1.221
首先去官网下载 nginx最新的的Windows版本,如下:
http://nginx.org/en/download.html
下载到软件包后,解压 nginx-1.7.6.zip包到你喜欢的根目录,并将目录名改为nginx。
然后在命令行下,切换nginx的主目录执行下列操作:
cd nginx
start nginx
这样,nginx 服务就启动了。打开任务管理器,查看 nginx.exe 进程,有二个进程会显示,占用系统资源,那是相当的少。如下图:
然后再打开浏览器,输入http://127.0.0.1,就可以看到nginx的欢迎页面了。如下:
其实我们也可以在命令行对nginx进行如下的相关操作:
nginx –h //查看nginx的帮助
nginx -s stop // 停止nginx
nginx -s reload // 重新加载配置文件
接下来就是配置nginx的conf文件。Windows下的nginx配置文件和linux配置文件是一样的。下面是我的配置:
worker_processes 1;
pid logs/nginx.pid;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_referer" '"$http_user_agent" "$http_x_forwarded_for"';
access_log logs/access.log main;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name localhost;
access_log logs/host.access.log main;
location / {
root E:\MikroTikRouterOS;
autoindex on;
}
}
现在来查看下,我配置后的nginx启动情况。如下:
通过上图,我们可以很明显的看到配置后nginx照样可以正常启动。我这个配置是把nginx作为http文件服务器来是有的。
按理说以上配置完毕后,我们就可以正常使用了。但是windows下的nginx和linux下的nginx不同,linux下的nginx可以随系统启动而启动,而windows下的却不同。
但是为了达到让nginx随windows系统启动而启动,我们可以通过“Windows Service Wrapper”这个软件来实现。但是在实现之前,我们还需要做几件事情:
首先windows系统必须要安装.NET程序。这个是为了支持Windows Service Wrapper软件的。如下:
下面我们开始正式配置Windows Service Wrapper:
1、然后下载最新版的 Windows Service Wrapper 程序,比如我下载的名称是 "winsw-1.9-bin.exe",然后,把它命名成你想要的名字,比如: "winsw.exe",当然你也可以不改名。
2、将重命名后的winsw.exe文件复制到 nginx 的主目录,我这里是 "E:\nginx"。
3、然后在nginx主目录下创建一个Windows Service Wrapper的XML配置文件,而且该名称必须与第一步重命名时winsw.exe使用的名称一致,比如我这里是 "winsw.xml"。如下:
winsw.xml文件内容如下:
4、在命令行下执行以下命令,以便将nginx安装成Windows服务。如下:
winsw.exe install
通过上图,我们可以很明显的看到nginx已经被成功的安装到系统的服务中。
接下来,我们只需要重启服务器就可以了。现在测试下:
可以很明显的看到,这次已经完全达到我们的要求。
补充:
Windows Servcie Wrapper的命令格式如下:
# 安装服务
CMD:\> winsw.exe install
# 卸载服务
CMD:\> winsw.exe uninstall
# 启动服务
CMD:\> winsw.exe start
# 停止服务
CMD:\> winsw.exe stop