Windows上使用nginx需要特别注意的事情
本文由 小茗同学 发表于 2017-04-26 浏览(4476)
最后修改 2017-04-26 标签:nginx windows

概述

刚碰到一个问题坑了我一个多小时,特写一篇文章记录防止再犯。

简而言之就是修改了nginx文件之后一直没生效但我误以为生效了,导致对nginx的域名配置优先级产生了怀疑。

详述

本地有如下nginx配置:

	server {
		listen	   80;
		server_name  demo.liuxianan.com;
		location / {
			root   E:\Workspace\demo;
			index  index.html index.jsp;
		}
	}
	server {
		listen	   80;
		server_name  test.liuxianan.com;
		location / {
			root   E:\Workspace\test;
			index  index.html index.jsp;
		}
	}
	server {
		listen	   80;
		server_name  ~^(.+)?\.liuxianan\.com$;
		location / {
			proxy_set_header X-Real-IP $remote_addr;
			proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
			proxy_set_header Host $http_host;
			proxy_pass http://127.0.0.1:8080/base/$1$request_uri;
		}
	}

demo.liuxianan.com是以前写的,一直是生效的,但是新写的test.liuxianan.com怎么都不生效,偏偏命中最后面那一个规则了,demotest是一模一样的配置,为什么就不生效呢?nginxreload了很多次,甚至都“重启”了很多次了,还是这样,让我不禁对人生产生了怀疑。

后来不知道是什么驱使我打开任务管理器看看,我去,竟然冒出这么多进程:

我们都知道正常的nginx运行只会有2个进程的,一个当我运行nginx -s stop时这些进程依然都在,怪不得无论我怎么reload都不生效呢!然后就仔细研究了下这种情况出现的原因:正常双击一次nginx会出现2个nginx进程,然后reload之后还是2个,stop之后就没了,但是如果双击n次nginx.exe就会出现n*2个进程,stop只会停掉其中某一个,此时无论你如何reload都不会生效了,坑死我了!

教训

Windows平台千万不要多次双击nginx,如果出现reload不生效的情况,一定要检查是不是有2个以上的进程。