記錄nginx 搭建集群環境踏過的坑


因為生產環境做了負載均衡,為了盡可能跟線上環境一致,所以想在本地也搭集群,這樣測試更靠譜。首先就想到nginx 這貨,搭個簡單的web 服務器實在太簡單了。

nginx 這玩意11年簡單玩過,那是版本好像是0.8.x,幾年過去了版本號不大,但迭代也不少,也算個版本帝。
在官網http://nginx.org/en/download.html 下載個最新版本,網上搜了篇文件分分鍾搭好了。


1.unknown directive ,錯誤日志如下:

2015/11/04 11:05:15 [emerg] 7544#3144: unknown directive "" in D:\Program Files\nginx-1.9.6/conf/nginx.conf:3
2015/11/04 11:07:13 [emerg] 1156#12888: unknown directive "" in D:\nginx-1.9.6/conf/nginx.conf:3

 出現這個根據經驗首先想到的可能是路徑中有像 Program Files 這樣有空格的,直接放根目錄結果還是如此。

 

網上搜索到原因及解決辦法(打死都想不到):

conf文件被記事本編輯過,保存成了含BOM頭的文件,使用其他編輯器將文件另存為UTF-8不含Bom頭的格式。

 

2.Nginx在啟動報錯: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) 。

 

原因是nginx默認80端口被System占用,造成nginx啟動報錯。在cmd窗口運行如下命令:netstat -aon | findstr :80

看到80端口果真被占用。發現占用的pid是4,用戶名是System。怎么能跟系統搶,但沒辦法80我還就用定了。
直接結束進程,結果藍屏杯具了。還是太野蠻了,此法不行。


1、打開注冊表:regedit

2、找到:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\HTTP

3、找到一個REG_DWORD類型的項Start,將其改為0

4、重啟系統,System進程不會占用80端口

 
3.將nginx做成服務
 之前啟動nginx用到園子里Ants寫的一個批處理。可開啟后會開着個命令行窗口。像我這種有點強迫症的人,不喜歡開太多窗口,可能不小心就關了。
搜索一番,方案很多,最終選擇 Windows Service Wrapper ,按網上的步驟做下來不太順,總結下。
 
1.不要放在  Program Files 這樣有空格的目錄;
2.安裝服務cmd.exe 以管理員身份運行;
3.xml配置文件logpath目錄必需存在(網上都是放nginx根目錄),不然服務起動不了;
4.logmode(日志模式)有 reset , roll (move to *.old) or append (default) 可選
 
實踐出真理,看似簡單的事,做起來不一定容易。最終附上 nginx 及 winsw 點我

參考:

http://www.360sdn.com/Nginx/2014/0807/4044.html

http://deeplyloving.iteye.com/blog/734588

https://kenai.com/projects/winsw/pages/ConfigurationSyntax


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM