Nginx隨筆

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
 

 

 


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章