作为一个前端,在工作的时候肯定会遇到这样的实际问题,就是要让别人看到跑在你自己机子上localhost的页面。这个时候就需要靠Apache和IIS帮忙了,当然现在有许多集成好的Mysql和Apache等框架,例如我自己本来就是使用很简单的SpeedAMP,小白式操作就OK了。但是之前一直久闻Nginx的大名,组长也强烈推荐大家去折腾一下这个高性能的web服务器,于是趁着一点闲暇的时间,简单的配置了一下Nginx,满足我的日常工作就好了。这是一篇入门的文章,而且主要是介绍windows下的Nginx配置。

首先当然是安装了,http://nginx.org/en/download.html,选择windows的版本,下完直接解压缩,然后就已经算安装完成了。打开cmd,转到Nginx所在的目录,当然为了方便起见,也可以将Nginx的目录设为系统的环境变量。刚开始时候,我在cmd里很二的直接使用了C:\nginx-1.2.6>nginx.exe,于是Nginx也能正常启动。但是,启动成功后,控制台是没有console.log的,要在目录下的logs文件夹查看日志,一般包括access和error。启动成功后,输入localhost便是Nginx的欢迎页了。刚才讲到,自己很二,为什么呢,因为直接运行Nginx.exe是不能通过ctrl+c停止服务的,而当前的控制台窗口也不能输入新的指令了,所以更科学的打开方式是C:\nginx-1.2.6>start nginx

要想停止Nginx服务,直接关闭控制台窗口是不行的,还需要指令

C:\nginx-1.2.6>nginx.exe -s stop

C:\nginx-1.2.6>nginx.exe -s quit

这两句都能停止Nginx服务,但是会有点差别:Nginx停止命令stop与quit参数的区别在于stop是快速停止Nginx,可能并不保存相关信息,quit是完整有序的停止Nginx,并保存相关信息。Nginx启动与停止命令的效果都可以通过Windows任务管理器中的进程选项卡观察到。

在第一次停止Nginx的时候,我就遇到问题了。控制台提示出错,error信息如下

windows server nginx配置文件下载 nginx windows环境配置_nginx

这主要是windows下Nginx的Pid对应不上导致的,我们可以在控制台输入如下指令,查看Nginx当前的状态。

windows server nginx配置文件下载 nginx windows环境配置_nginx_02

遇到这种情况的时候,作为一个小白,大家的第一反应自然就是google啦,别紧张,我已经帮大家google好了,我们可以通过如下指令来结束Nginx的进程

windows server nginx配置文件下载 nginx windows环境配置_数据库_03

好了,现在就已经掌握了最基本的开启服务和停止服务了,其实也很简单。然后就是conf的配置了。Nginx的所有配置都默认使用conf/nginx.conf文件,其地位相当于apache的httpd.conf文件 。当运行nginx.exe暗含运行了nginx -c conf\nginx.conf。如果想使用自己定义的conf文件如my.conf,命令为nginx -c conf\my.conf。大体结构如下:

http {
  server {
    #1.侦听80端口 
    listen  80; 
    location / {
        # 2. 默认主页目录在nginx安装目录的html子目录。
        root   html;
        index  index.html index.htm;
        # 3. 没有索引页时,罗列文件和子目录
        autoindex on;
        autoindex_exact_size on;
        autoindex_localtime on;
    }
    # 4.指定虚拟目录
    location /tshirt {
	alias D:\programs\Apache2\htdocs\tshirt;
	index index.html index.htm;
    }
  }
  # 5.虚拟主机www.codejia.net配置
  server {
    listen          80;
    server_name     www.codejia.net;
    access_log codejia.net/logs/access.log;
    location / {
      index index.html;
      root  codejia.net/htdocs;
    }
  }
}