1.查看nginx的版本和支持那些模塊(例如支持flv視頻拖拽的http-flv-module):nginx -V
2.在server配置中,加入如下語句,表明所有的flv文件由flv模塊進行處理:
location ~ \.flv { flv; }
3.限制訪問的IP(例如只能本機訪問):在配置文件中加上紅字
location / {
allow 127.0.0.1;
deny all;
root html;
index index.html index.htm;
}
這樣就只有本機能訪問了
4.正確使用root命令:
如果沒有在sever指定root,需要在每個location都指定root, 否則root將指向缺省位置(即html那個文件夾);
server {
listen 80;
server_name localhost;
root com/svs/mtp/res/video;
如果沒有在這裏定義 root的路徑,那麼就需要在下面的這樣的location中定義具體的root。
location ~ \.flv { flv; }
如果上面沒定義root,而且這裏也沒定義,那麼就會在播放flv的時候吧root定義爲默認的html。
如果在server裏沒定義root,還想要在訪問具體文件的時候指定到具體的路徑裏,則需要在具體文件的location之中指定root。
location / {
root com/svs/mtp/res/video;
allow 127.0.0.1;
deny all;
index index.html index.htm;
}
注意:root的路徑的寫法是前後都沒有斜線。
5.把nginx以windows service啓動
①需要ng_srvinst這個工具,在nginx的官網上可以下載到,並且以windows服務啓動nginx可能要整合進nginx,繼續關注中。
②ng_srvinst
使用比較簡單,主要就是改變ng_srv.xml的參數,具體配置如下:
<service>
<id>nginx</id>
<name>nginx</name> //server的名字
<description>nginx</description>
<executable>F:\svn\MTP(standalone with red5)\branches\CBT\src\Standalone\Java\nginx.exe</executable>//nginx.exe的路徑
<logpath>F:\svn\MTP(standalone with red5)\branches\CBT\src\Standalone\Java\logs\</logpath>
<logmode>roll</logmode>
<depend></depend>
<startargument>-p "F:\svn\MTP(standalone with red5)\branches\CBT\src\Standalone\Java"</startargument>//啓動和停止的路徑,必須設置準確,否則會啓動比的服務的。而且如果路徑裏有特殊符號,就必須用雙引號把路徑包起來,否則就會出項註冊服務成功,但是服務卻啓動不了的情況。
<stopargument>-p "F:\svn\MTP(standalone with red5)\branches\CBT\src\Standalone\Java" -s stop</stopargument>
</service>
③然後用cmd進入ng_srvinst
的文件夾下,執行”ng_srvinst.bat install“這條命令就會把nginx的服務註冊上,要刪除服務可以用“ng_srvinst.bat
remove”的命令,也可以用sc delete nginx這條命令。
注意:第三步如果出錯誤如下:
System.Runtime.InteropServices.COMException (0x800706BA)
at System.Runtime.InteropServices.Marshal.ThrowExceptio
rrorCode, IntPtr errorInfo)
at System.Management.ManagementObjectCollection.Managem
veNext()
at WMI.WmiRoot.ClassHandler.Invoke(Object proxy, Method
args)
at WMI.Win32ServicesProxy.Select(String )
at winsw.WrapperService.Run(String[] args)
at winsw.WrapperService.Main(String[] args)
原因是widows的服務DCOM Server Process Launcher沒有開啓。
④之後就可以用net start nginx來啓動服務,用net stop nginx來停止服務。
6.用java啓動nginx的windows server,代碼如下:
StringBuffer strbuffer=new StringBuffer();
String errStr;
Process p = Runtime.getRuntime().exec("net start nginx");
InputStream err = p.getErrorStream();“getErrorStream()的是執行批處理命令錯誤時的錯誤信息。要是有正常的輸出,則用getInputStream方法”
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(err));
while((errStr=bufferedReader.readLine())!=null){
strbuffer.append(errStr);
}
err.close();
注意:註冊服務完成之後不可以改變ng_srvinst
的位置,否則服務會啓動不了的。
7.nginx支持PHP(php已經安裝好了)①需要使用到PHP的php-cgi,首先修改已經存到windowsx下的php.ini文件cgi.fix_pathinfo=1,加上這一句,而且user_dir =和doc_root =應該是空的,
②配置nginx的配置文件:
location ~ \.php$ {
root CBT;
fastcgi_pass 127.0.0.1:9000;//啓動cgi的時候要用到
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;//注意,原先的值是SCRIPT_FILENAME /scripts$fastcgi_script_name,改成當前的值
include fastcgi_params;
}
這裏的註釋打開,注意,紅色的值一定要改變,否則會報404或者No input file specified錯誤。
③啓動php-cgi和nginx,需要RunHiddenConsole.exe,否則,cgi啓動後命令窗口沒法關閉。把RunHiddenConsole.exe放到nginx的目錄下,編輯start.bat:
echo Starting PHP FastCGI...
RunHiddenConsole D:\php5\php-cgi.exe -b 127.0.0.1:9000 -c C:\WINDOWS\php.ini
echo Starting nginx...
net start nginx
注:紅字爲nginx的配置文件裏的PHP模塊的參數。
④停止nginx和php-cgi,下載一個Process.exe放到nginx下,編輯如下腳本stop.bat:
@echo off
echo Stopping PHP FastCGI...
process.exe -k php-cgi.exe>nul
echo Stopping nginx...
net stop nginx
exit