一,什么是json

          json是一種數(shù)據(jù)結(jié)構(gòu),易于人閱讀和編寫,同時(shí)也易于機(jī)器解析和生成。

          json建構(gòu)兩種結(jié)構(gòu):

          1,“名稱/值”成對(duì)的集合,不同的語言中,它被理解為對(duì)象(object),紀(jì)錄(record),結(jié)構(gòu)(struct),字典(dictionary),哈希表(hash table),有鍵列表(keyed list),或者關(guān)聯(lián)數(shù)組 (associative array)。
          2,值的有序列表(An ordered list of values)。在大部分語言中,它被理解為數(shù)組(array)。


          json具有以下這些形式:

          對(duì)象是一個(gè)無序的“‘名稱/值’對(duì)”集合。一個(gè)對(duì)象以“{”(左括號(hào))開始,“}”(右括號(hào))結(jié)束。每個(gè)“名稱”后跟一個(gè)“:”(冒號(hào));“‘名稱 /值’ 對(duì)”之間使用“,”(逗號(hào))分隔。


          二,我遇到的問題
          看下面的例子:
          1. <?php
          2. $string = '{"skus" : [
          3.                      {
          4.                         "SHADENAME" : null,
          5.                         "HEX_VALUE_STRING" : "",
          6.                         "SKU_BASE_ID" : 5912,
          7.                         "pricePlusTax" : 8400,
          8.                         "PRODUCT_SIZE" : "220g",
          9.                         "PRICE" : 8000,
          10.                         "SKU_ID" : "SKU5912",
          11.                         "INVENTORY_STATUS" : 2,
          12.                         "PRODUCT_CODE" : 016500
          13.                      }
          14.                   ],
          15.                 "shaded" : 0,
          16.                 "PROD_CAT_IMAGE_NAME" : 0165,
          17.                 "SKINTYPE_DESC" : "",
          18.                 "PRODUCT_ID" : "PROD2158"
          19.              }
          20. ';

          21. //下面的正則是把0615這樣數(shù)據(jù),轉(zhuǎn)換成"0615"
          22. $pattern = "/:(\s*)0(\d+)/ui";
          23. $replacement = ':\\1"0\\2"';
          24. $string = preg_replace($pattern, $replacement, $string);

          25. $result = json_decode($string, true);
          26. print_r($result);

          27. $string = json_encode($result);
          28. echo $string;
          29. ?>
          復(fù)制代碼



          操作和分析:

          1,如果我把正則的東西拿掉的話,print_r($result);根本顯示不了任何東西,問題就出在016500這樣的數(shù)據(jù)上,他搞不清楚,這樣的數(shù)據(jù)到底是字符串類型,還是數(shù)值類型。加上雙引號(hào)就好了。

          2,我把數(shù)組又重新$string = json_encode($result);并把json字符串打印出來,發(fā)現(xiàn)在json_encode會(huì)把016500加上雙引號(hào),由此可以斷定,php代碼中的那段json字符串是手動(dòng)生成的。

          3,即使像016500這樣的數(shù)據(jù)沒有加上雙引號(hào),我想json_decode也可以做出準(zhǔn)確的判斷,因?yàn)檫@個(gè)邏輯不復(fù)雜,所以我想json_decode是不是應(yīng)當(dāng)改進(jìn)一下,還有我用php版本是5.2.3,不知道最新的版本有沒有修正這個(gè)bug

          posted @ 2011-01-27 17:44 小馬歌 閱讀(279) | 評(píng)論 (0)編輯 收藏
           
          脫發(fā)是一種常見疾患,主要有斑禿,早禿,脂溢性脫發(fā)等。  防脫發(fā)的方法也有很多,包括食物療法,梳頭方法,防脫秘方和日常禁忌等。現(xiàn)在簡單介紹幾種防脫發(fā)的方法

          防脫發(fā)方法一:防止禿頭的早晚梳發(fā)
          每天早晚防脫發(fā)方法各梳發(fā)百次,能相機(jī)頭皮改善頭發(fā)間的通風(fēng),由于頭皮是容易出汗弄臟的地方,勤于梳發(fā)可能有助于防止禿頭和頭皮屑的發(fā)生。我們最好能費(fèi)一點(diǎn)心思在自己的頭發(fā)上,使頭發(fā)保持光潤的狀態(tài)。

          防脫發(fā)方法二:治療脫發(fā)的食物。
          攝取過多的糖分及鹽分或動(dòng)物性脂肪,有害于血液循環(huán)。這種人應(yīng)該多喝生水或多吃蔬菜。含有豐富鐵質(zhì)的食品,瘦肉,雞蛋的蛋白,菠菜,包心菜,芹菜,水果等都是最佳的治療食物。脫發(fā)或禿頭的人,頭皮都已硬化,上述食品有助于軟化頭皮。

          還有幾種防脫發(fā)的方法小秘方:
          防脫發(fā)的方法1、枸杞子酒:枸杞子100克浸泡在白酒400毫升里,2周后可以飲用。每天10--15毫升,治療脫發(fā)。 
          防脫發(fā)的方法2、生姜:將生姜切片,在脫發(fā)處反復(fù)擦拭,每天2--3次,可以促進(jìn)毛發(fā)的生長。或把生姜切碎,放入水中煮開,把姜末濾出,用生姜水洗頭。 
          防脫發(fā)的方法3、何首烏粥:取何首烏30克、粳米100克、大棗3枚、冰糖少許,何首烏加水煎湯,去渣留汁,加粳米、大棗、冰糖同煮成粥,每日1次,改善 發(fā)質(zhì),治療脫發(fā)。  
          防脫發(fā)的方法4、淘米水:把淘米水?dāng)R置兩天后會(huì)自然發(fā)酵,此時(shí)用來洗頭可以改善干枯的發(fā)質(zhì),洗頭時(shí)不用洗發(fā)劑,用淘米水洗完后直接用清水沖洗干凈即可。
          防脫發(fā)的方法5、 可以選用一些專門治療脫發(fā)的洗發(fā)水和藥物,如止脫1+1生發(fā)露,能增強(qiáng)頭皮血液循環(huán),促進(jìn)毛發(fā)蛋白合成及新陳代謝,滋潤膚發(fā),使毛發(fā)再生;長期服用可使頭 發(fā)烏黑亮麗,滋養(yǎng)毛發(fā),防止頭發(fā)分叉變質(zhì)、白發(fā)、脫發(fā)等。
          更多關(guān)于防脫發(fā)的方法信息咨詢科發(fā)源電話:400-888-0050
          posted @ 2010-12-25 20:33 小馬歌 閱讀(215) | 評(píng)論 (0)編輯 收藏
           

          官方地址:http://www.wu-ftp.org
          http://mirrors.bevc.net/wu-ftpd/wu-ftpd/wu-ftpd-2.6.2.tar.gz
          ftp://ftp.pbone.net/mirror/archive.download.redhat.com/pub/redhat/linux/8.0/en/os/i386/RedHat/RPMS/wu-ftpd-2.6.2-8.i386.rpm

          一、實(shí)驗(yàn)環(huán)境
          AS4+wu-ftpd-2.6.2

          二、安裝<推薦rpm安裝>
          1、源碼安裝
          # cd wu-ftpd-2.6.2/src
          # cp ftpcmd.y ftpcmd.y.orig
          # sed -e "s/=[ "$'\t'"][ "$'\t'"]*{/'=' {/" ftpcmd.y.orig > ftpcmd.y
          # cd ..
          # ./configure
          # make
          # make install

          2、rpm安裝
          # rpm -ivh wu-ftpd-2.6.2-8.i386.rpm

          三、實(shí)驗(yàn)要求
          1、將組設(shè)置成real,guest,anonymous三個(gè)組進(jìn)行控制;
          2、用戶身份有real,guest,anonymous,其中real只允許來自222.220.162.0/24網(wǎng)絡(luò),而guest,anonymous可來自所有網(wǎng)段,但除了60.179.149.0/24網(wǎng)段;
          3、允許可用的被動(dòng)端口,65501-65510端口
          4、系統(tǒng)中小于499以及大于65000的UID與GID都被拒絕登錄;
          5、任何時(shí)候,最大的在線人數(shù)為30人,guest最多10人,anonymous0800-2000最多5人;
          6、實(shí)體用戶tangye被限制只以在主目錄中工作,無法退出主目錄,其他實(shí)體用戶則不受限制;
          7、有二個(gè)系統(tǒng)用戶分別為user01,user02,將這個(gè)兩個(gè)用戶定為guest身份,設(shè)置主目錄為/home/user01/data,/home/user02/data,并且設(shè)置傳輸速度最大為100KB/s;隸屬于ftpuser
          8、還有一個(gè)用戶user03用戶,上傳\下傳比例1.0,傳輸速度為64KB/s;
          9、anonymous(匿名用戶)的主目錄設(shè)置為/home/ftp,并且限制anonymous一次連網(wǎng)最長30分鐘,而且最多能下20個(gè)文件,20M的數(shù)據(jù)量,傳輸速度最快僅到32KB/s;上傳的目錄為/home/ftp/upload中,默認(rèn)文件擁有ftp所屬的組sys,上傳速度最快為16KB/s;

          四、系統(tǒng)配置
          # useradd tangye
          # groupadd ftpuser
          # useradd -m -g ftpuser -s /sbin/nologin user01
          # useradd -m -g ftpuser -s /sbin/nologin user02
          # useradd -m -g ftpuser -s /sbin/nologin user03
          # passwd user01          //分別設(shè)置密碼為'123456'
          # passwd user02
          # passwd user03
          # passwd tangye
          # vi /etc/xinetd.d/wu-ftpd
          service ftp
          {
                  socket_type             = stream
                  wait                    = no
                  user                    = root
                  server                  = /usr/sbin/in.ftpd
                  server_args             = -l -a
                  log_on_success          += DURATION
                  nice                    = 10
                  disable                 = no   <===NO表示,啟用wu-ftpd
          }
          # /etc/rc.d/init.d/xinetd restart
          # netstat -tl | grep ftp    //出現(xiàn)以下提示,表示開啟FTP成功
          tcp        0      0 *:ftp                       *:*                         LISTEN
          # vi /etc/ftpaccess         //主要配置文件
          ###############針對(duì)組設(shè)置#################
          class   all             real,guest,anonymous *
          class   allreal         real                  222.220.162.0/24
          class   allguest        guest                 !60.179.149.0/24 *
          class   allanonymous    anonymous             !60.179.149.0/24 *
          ###############針對(duì)主機(jī)設(shè)置###############
          email postmaster@tglm.3322.org    //管理員的e-mail信箱
          hostname tglm.3322.org            //主機(jī)名稱
          shutdown /etc/shutmsg             //用來設(shè)置關(guān)閉FTP服務(wù)的時(shí)間 2008 7 15 12 0 0130 0030 “提示文字” 表示2008/7/15的12:00要關(guān)閉FTP,在12點(diǎn)之前的一個(gè)半小時(shí)內(nèi)(10:30),不允許新的連網(wǎng)登錄,在12點(diǎn)三十分鐘前(11:30)斷掉已經(jīng)存在的連網(wǎng)。FTP服務(wù)沒關(guān),只是無法登錄。
          loginfails 5                      //允許錯(cuò)誤的登錄次數(shù)5,超過則斷開
          log transfers anonymous,guest,real inbound,outbound //記錄anonymous,guest,real用戶文件傳輸上傳下傳動(dòng)作,記錄/var/log/xferlog文件中
          passwd-check rfc822 warn          //匿名的驗(yàn)證方式<密碼格式二種trivial和rfc822,前者必須含有@字符,后者字母和數(shù)安>;<動(dòng)作二咱warn和enforce,前者用戶輸入錯(cuò)誤密碼,顯示警告,及允許登錄。后者,顯示警告,并中斷連網(wǎng)>
          #################信息管理#################
          readme README*    login
          readme README*    cwd=*            //當(dāng)用戶登錄或變換目錄,若目的端有README*所有的文件,則向用戶提醒用戶的使用,
          message /welcome.msg            login   //welocome.msg歡迎畫面
          message .message                cwd=*   //不公提醒用戶使用,當(dāng)?shù)卿浕蜃儞Q到任何文件名為.message的目錄時(shí),該文件內(nèi)容會(huì)顯示在屏幕上。
          #################命令管理#################
          compress        yes             all
          tar             yes             all           //允許所有用戶壓縮解壓指令
          chmod           no              guest,anonymous   //不允許guest,anonymous設(shè)置目錄文件權(quán)限
          delete          no              anonymous
          overwrite       no              anonymous
          rename          no              anonymous     //不允許anonymous 刪除改名
          #################登錄管理#################
          deny-uid %-499 %65000-
          deny-gid %-499 %65000-         //系統(tǒng)中小于499以及大于65000的UID、GID將被拒絕
          allow-gid ftpuser              //允許ftpuser組登錄
          #################時(shí)間設(shè)置#################
          timeout accept 120            //由于某種原因或網(wǎng)絡(luò)帶寬影響,無法立即登錄。等待客戶端120秒連網(wǎng)
          timeout connect 120            //三次握手客戶端回應(yīng)ACK的時(shí)間120秒
          timeout data    2400           //允許上傳下載一個(gè)文件的時(shí)間,2400表示40分鐘。建議大一點(diǎn)
          timeout idle    1800           //多久沒有和服務(wù)器交互,1800S會(huì)自動(dòng)斷線
          timeout maxidle 1800           //與idle類似,客戶端可以要求延長時(shí)間
          #################主機(jī)連接數(shù)#################
          <limit> <人物組名稱> <連接數(shù)> <時(shí)間>     <被拒絕時(shí)顯示內(nèi)容>
          limit        all        30      Any                /etc/ftpmaxnumber
          limit      allguest     10      Any                /etc/ftpmaxnumber
          limit    allanonymous    5      Any0800-2000       /etc/ftpmaxnumber
          ##################被動(dòng)端口##################
          passive ports <CIDR地址> <最小端口> <最大端口>
          passive ports 0.0.0.0/0     65501     65510         //來自任何地方的IP在請(qǐng)求passive連網(wǎng)模式,將以65501-65510之間被動(dòng)端口來連;
          ##################實(shí)體用戶##################
          restricted-uid tangye           //限制用戶的主目錄,無法到到達(dá)其他的目錄中
          #################guest設(shè)置##################
          guestuser user01 user02 user03        //將user01-03設(shè)置成guest
          guest-root /home/user01/data    user01
          guest-root /home/user02/data    user02
          guest-root /home/user03         user03       //設(shè)置用戶的主目錄
          throughput      <根目錄>       <次目錄> <文件名> <bytes/s> <倍數(shù)> <地址>
          throughput /home/user01/data      *         *      102400     -      *
          throughput /home/user02/data      *         *      102400     -      *
          throughput /home/user03           *         *       65536     -      *
          ul-dl-rate     1     allguest   //這表示allguest組上傳下載的
          ##############anonymous設(shè)置##################
          linmit-time    anonymous     10                         //anonymous每次登錄連網(wǎng)10分鐘,如果超過10分鐘,系統(tǒng)會(huì)強(qiáng)制斷開
          file-limit        out        20         allanonymous    //allanonymous組中任何用戶,在一次登錄中可以下載20個(gè)文件
          data-limit        out      10485760     allanonymous     //allanonymous組中任何用戶,在一次登錄中可以下載10M數(shù)據(jù)
          throughput     /home/ftp         *            *      32768     -      *
          throughput     /home/ftp       /upload        *      16384     -      *
          anonymous-root /home/ftp
          upload      /home/ftp     /upload yes ftp sys 0666
          # mkdir -pv /home/ftp/upload
          # chown ftp:sys /home/ftp/upload
          # mkdir /home/user01/data
          # mkdir /home/user02/data
          # chown user01:ftpuser /home/user01/data
          # chown user02:ftpuser /home/user02/data
          # cat /etc/shells |grep sbin       //確認(rèn)/sbin/nologin在該文件內(nèi)
          # vi /welcome.msg
          Welcome to my FTP site.
          Now is the time ==> %T
          The host name is %L
          You are %U and from %R
          There are %N person in my site, now.
          If you have any problem please call me
          %E
          # vi /home/user01/data/.message
          hello user01
          # vi /home/user02/data/.message
          hello user02
          # vi /home/ftp/welcome.msg
          Welcome to my FTP site.
          Now is the time ==> %T
          The host name is %L
          You are %U and from %R
          There are %N person in my site, now.
          If you have any problem please call me
          %E
          # reboot

          修改FTP默認(rèn)端口方法
          # vi /etc/xinetd.d/wu-ftpd
          service wuftp         <===修改這里
          {
                  socket_type             = stream

          # vi /etc/services //添加以下內(nèi)容
          wuftp    3344/tcp
          # /etc/rc.d/init.d/xinetd restart

          五、客戶端命令
          ftp> dir                        顯示遠(yuǎn)程主機(jī)的內(nèi)容
          ftp> cd                         變換遠(yuǎn)程主機(jī)的目錄
          ftp> quit/close/bye/exit        退出遠(yuǎn)程主機(jī)
          ftp> get file                   下載遠(yuǎn)程主機(jī)的文件
          ftp> mget file                  取得所有文件
          ftp> put file                   當(dāng)本地端的文件,上傳到遠(yuǎn)程主機(jī)
          ftp> mput file                  將本地端的所有文件,上傳到遠(yuǎn)程主機(jī)
          ftp> delete file                刪除遠(yuǎn)程主機(jī)文件
          ftp> mkdir file                 建立目錄
          ftp> lcd                        變換本地端路徑
          ftp> ascii/binary               傳輸格式
          ftp> help                       幫助命令

          posted @ 2010-12-22 17:07 小馬歌 閱讀(835) | 評(píng)論 (0)編輯 收藏
           

          1.rpm包可以在http://rpmfind.net/linux/RPM/WByName.html處下載得到,以rpm包方式安裝非常簡單
          安裝包到 http://www.wu-ftpd.org 下載最新版本的 WU-FTPD。
          2.進(jìn)入 Linux, 并以 root 的身份登陸。
          tar zxvf wu-ftpd-2.6.0.tar.gz
          cd /usr/local/src/wu-ftpd-2.6.0
          3../configure
          注意,在 64位元的 linux 上,可能會(huì)出現(xiàn)這種情況checking host system type... Invalid configuration
          'x86_64-pc-linux-gnuoldld': machine 'x86_64-pc' not recognized
          解決辦法:修改 buildutils/config.guess , 將一行
          UNAME_MACHINE=`(uname -m) 2>/dev/null' || UNAME_MACHINE=unknown
          改為
          #UNAME_MACHINE=`(uname -m) 2>/dev/null' || UNAME_MACHINE=unknown
          UNAME_MACHINE=i686
          4.在執(zhí)行 ./configure 之后, 配置腳本會(huì)自動(dòng)生成 Makefile. 如果在設(shè)置的過程中沒有任何的錯(cuò)誤, 我們就可以開始編譯源碼了. 相應(yīng)的

          命令為:

          make
          make install

          是用make編譯的時(shí)候可能出現(xiàn)
          make[1]: *** [ftpcmd.c] Error 1
          make[1]: Leaving directory /usr/local/src/wu-ftpd-2.6.0/src'
          make: *** [all] Error 2
          或者之類的錯(cuò)誤
          這時(shí)候可以通過在目錄wu-ftpd-2.6.2/src/下使用以下代碼進(jìn)行修正。
          cp ftpcmd.y ftpcmd.y.orig
          sed -e "s/=[ "$'\t'"][ "$'\t'"]*{/'=' {/" ftpcmd.y.orig > ftpcmd.y

          安裝 WU-FTPD 至缺省的目錄(/usr/sbin)下.

          posted @ 2010-12-22 17:04 小馬歌 閱讀(563) | 評(píng)論 (0)編輯 收藏
           

          from:http://niyunjiu.javaeye.com/blog/740812


          其實(shí)這個(gè)Bug是由分兩種情況的:

          1.和Nginx無關(guān),是針對(duì)CSS背景圖片的。

          一般用戶不會(huì)碰到,更多的時(shí)候是開發(fā)者將自己的IE的緩存策略從默認(rèn)的”自動(dòng)”改為“每次訪問都查詢”才發(fā)生 的。特點(diǎn)是鼠標(biāo)一旦浮動(dòng)到有背景圖片的地方,IE會(huì)不顧已經(jīng)緩存的圖片,自行去服務(wù)器再次獲取圖片,造成圖片短暫消失。這個(gè)問題比較簡單,可以通過以下腳 本解決。

          1 <script type=”text/javascript”>// <![CDATA[
          2 try {
          3 document.execCommand('BackgroundImageCache', false, true);
          4 } catch(e) {}
          5 // ]]></script>

          2. 但是實(shí)際上更常見的原因是Nginx上打開了Gzip壓縮功能。

          這個(gè)是IE6 的著名Bug,早在2002年就被人詳細(xì)討論過了,在IE7中有所改進(jìn),但微軟永遠(yuǎn)也不會(huì)去修復(fù)IE6了。

          根本原因是Nginx對(duì)于啟用了Gzip的http上下文,即使你在之前的配置文件里聲明過 gzip_disable “MSIE [1-6].”,Nginx不再對(duì)IE6用Gzip壓縮了,但是送出的http報(bào)頭卻仍然采用了和Gzip壓縮數(shù)據(jù)包相匹配的Vary: Accept-Encoding。IE6不認(rèn)識(shí)這個(gè)報(bào)頭,IE6對(duì)除了Vary: User-Agent的報(bào)頭外,都不查詢緩存,直接去服務(wù)器申請(qǐng)。更絕得是,不是使用查詢文件是否更新,而是強(qiáng)行要求一份完整文件。(IE7總算客氣了 點(diǎn),就是先查詢一下文件是否更新在下載,減輕了這個(gè)bug的影響)。

          這個(gè)Bug的級(jí)別很高,靠前面1中的方法是不行的。在 NGINX中,通過add-header Cache-Control “post-check:3600, pre-check:43200″; ,象這里 介紹的方法, 也是不行的。通過一番痛苦的摸索,才發(fā)現(xiàn)要解決這個(gè)Bug,有兩個(gè)方法,一個(gè)是使用Nginx的headers-more-nginx-module, 遇到User-Agent是IE6(或者不管三七二十一),修改報(bào)頭為Vary: User-Agent。不過這個(gè)模塊并不是標(biāo)準(zhǔn)配置,需要重新編譯Nginx。

          另一個(gè)更為簡便易行的方式就是在諸如圖片和CSS,JS文件存取的地方加上一下語句,顯示關(guān)閉Gzip,并手工加上報(bào)頭。

          1 if ($http_user_agent ~ “MSIE [1-6].”) {
          2 #Must explicitly turns off gzip to prevent Nginx set Vary:Accept-Encoding
          3 #which will prevent IE6 from caching anything
          4 gzip off;
          5 add_header Vary “User-Agent”;
          6 }
          經(jīng)過我的測(cè)試這樣是可以解決問題的。這里只能用$http_user_agent來獲取瀏覽器參數(shù),曾經(jīng)試過$ancient_browser,不 過沒有成功。

          另外,Nginx本身是有一個(gè)Gzip的Derective來控制Header的, 就是gzip_vary。設(shè)成gzip_vary off應(yīng)該也能解決問題,但這是這個(gè)參數(shù)只能存在與http, location,server這些上下文里,不能添加到if上下文里,所以只能用gzip off; 把gzip完全給關(guān)了。

          posted @ 2010-12-20 16:45 小馬歌 閱讀(317) | 評(píng)論 (0)編輯 收藏
           

          from:http://codeigniter.org.cn/forums/thread-692-1-1.html

           

          CI默認(rèn)過濾了$_GET

          需要傳遞get參數(shù)時(shí)一般直接 /參數(shù)一/參數(shù)二
          詳見手冊(cè)說明:http://codeigniter.org.cn/user_guide/general/controllers.html#passinguri

          但是有時(shí)候需要傳遞很長的復(fù)雜的url,比如常用的 http://www.nicewords.cn/index.php/controller/method/?backURL=http://baidu.com/blog/hi

          這時(shí) 這種模式就行不通了。參數(shù)中本身的/會(huì)與默認(rèn)的分隔符沖突

          解決方案:

          1) 在config.php 中,將‘uri_protocol’ 設(shè)置為 ‘PATH_INFO’.

          PHP
          $config['uri_protocol'] = "PATH_INFO";
          復(fù)制代碼



          2) 在需要使用$_GET的之前加:

          PHP
          parse_str($_SERVER['QUERY_STRING'], $_GET);
          復(fù)制代碼



          這樣,形如 index.php/blog/list?parm=hello&page=52 就可以運(yùn)行了。

          官網(wǎng)說明:
          http://codeigniter.com/wiki/QUERY_STRING_GET/

          posted @ 2010-12-20 11:50 小馬歌 閱讀(202) | 評(píng)論 (0)編輯 收藏
           

          NGINX 502錯(cuò)誤排查

          NGINX 502 Bad Gateway錯(cuò)誤是FastCGI有問題,造成NGINX 502錯(cuò)誤的可能性比較多。我將502 Bad Gateway錯(cuò)誤有關(guān)的問題和排查方法列一下,先從FastCGI配置入手:

          1.FastCGI進(jìn)程是否已經(jīng)啟動(dòng)

          2.FastCGI worker進(jìn)程數(shù)是否不夠
          運(yùn)行 netstat -anpo | grep “php-cgi” | wc -l 判斷是否接近FastCGI進(jìn)程,接近配置文件中設(shè)置的數(shù)值,表明worker進(jìn)程數(shù)設(shè)置太少

          3.FastCGI執(zhí)行時(shí)間過長
          根據(jù)實(shí)際情況調(diào)高以下參數(shù)值
          fastcgi_connect_timeout 300;
          fastcgi_send_timeout 300;
          fastcgi_read_timeout 300;

          4.FastCGI Buffer不夠
          nginx和apache一樣,有前端緩沖限制,可以調(diào)整緩沖參數(shù)
          fastcgi_buffer_size 32k;
          fastcgi_buffers 8 32k;

          5.Proxy Buffer不夠
          如果你用了Proxying,調(diào)整
          proxy_buffer_size  16k;
          proxy_buffers      4 16k;

          6.https轉(zhuǎn)發(fā)配置錯(cuò)誤
          正確的配置方法
          server_name www.mydomain.com;
          location /myproj/repos {
          set $fixed_destination $http_destination;
          if ( $http_destination ~* ^https(.*)$ )
          {
          set $fixed_destination http$1;
          }
          proxy_set_header Host $host;
          proxy_set_header X-Real-IP $remote_addr;
          proxy_set_header Destination $fixed_destination;
          proxy_pass http://subversion_hosts;
          }

          Nginx 413錯(cuò)誤的排查:修改上傳文件大小限制

          在上傳時(shí)nginx返回了413錯(cuò)誤,查看log文件,顯示的錯(cuò)誤信息是:”413 Request Entity Too Large”, 于是在網(wǎng)上找了下“nginx 413錯(cuò)誤”發(fā)現(xiàn)需要做以下設(shè)置:

          nginx.conf增加 client_max_body_size的相關(guān)設(shè)置, 這個(gè)值默認(rèn)是1m,可以增加到8m以增加提高文件大小限制;
          如果運(yùn)行的是php,那么還要檢查php.ini,這個(gè)大小client_max_body_size要和php.ini中的如下值的最大值一致或者稍大,這樣就不會(huì)因?yàn)樘峤粩?shù)據(jù)大小不一致出現(xiàn)的錯(cuò)誤。

          post_max_size = 8M
          upload_max_filesize = 2M

           

          Nginx 400錯(cuò)誤排查:HTTP頭/Cookie過大

          今天有人匯報(bào)nginx的HTTP400錯(cuò)誤,而且這個(gè)HTTP400錯(cuò)誤并不是每次都會(huì)出現(xiàn)的,查了一下發(fā)現(xiàn)nginx 400錯(cuò)誤是由于request header過大,通常是由于cookie中寫入了較長的字符串所引起的。

          解決方法是不要在cookie里記錄過多數(shù)據(jù),如果實(shí)在需要的話可以考慮調(diào)整在nginx.conf中的client_header_buffer_size(默認(rèn)1k)
          若cookie太大,可能還需要調(diào)整large_client_header_buffers默認(rèn)4k),該參數(shù)說明如下:
          請(qǐng)求行如果超過buffer,就會(huì)報(bào)HTTP 414錯(cuò)誤(URI Too Long)
          nginx接受最長的HTTP頭部大小必須比其中一個(gè)buffer大,否則就會(huì)報(bào)400的HTTP錯(cuò)誤(Bad Request)。

          posted @ 2010-12-17 13:16 小馬歌 閱讀(1861) | 評(píng)論 (0)編輯 收藏
           

          系統(tǒng)
          Red Hat Enterprise Linux AS release 4 (Nahant Update 7)
          X86_64
          軟件
          nginx-0.6.35.tar.gz
          apache-tomcat-5.5.27.tar.gz
          jdk-1_5_0_17-linux-amd64.rpm
          參考

          http://blog.chinaunix.net/u2/83793/showart_1354266.html

          http://www.sudone.com/nginx/nginx_ssl.html

          http://zys.8800.org/?p=286

          部署
          192.168.1.62 nginx 做負(fù)載均衡
          192.168.1.64 tomcat1
          192.168.1.66 tomcat2

          分別在64和66上安裝jdk和tomcat
          環(huán)境變量設(shè)置 /etc/profile
          export JAVA_HOME=/usr/java/jdk1.5.0_17
          export PATH=$JAVA_HOME/bin/:$PATH
          export CLASSPATH=$JAVA_HOME/lib:$CATALINA_HOME/lib:.
          export CATALINA_BASE=/usr/local/tomcat-5.5.27
          export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/apr/lib
          export CATALINA_HOME=/usr/local/tomcat-5.5.27

          編輯 server.xml
          去掉 cluster段的注釋
          增加
          保存
          由于linux本身不支持組播,因?yàn)樾枰砑咏M播
          命令如下
          route add -net 228.0.0.0 netmask 255.0.0.0 dev eth0
          只在tomcat的其中一臺(tái)機(jī)器添加就可以了
          提醒一下,記得關(guān)閉iptables和selinux

          現(xiàn)在去編譯nginx
          ./configure --prefix=/usr/local/nginx-0.6.35 --with-md5=/usr/lib --with-sha1=/usr/lib --with-http_ssl_module --with-http_stub
          _status_module
          make -j10
          make install

          修改nginx.conf
          worker_processes 4;
          pid logs/nginx.pid;
          worker_rlimit_nofile 51200;
          events {
          use epoll;
          worker_connections 9812;
          }

          http {
          include mime.types;
          default_type application/octet-stream;

          sendfile on;
          tcp_nopush on;

          keepalive_timeout 65;

          gzip on;
          upstream winalite.com
          {
          ip_hash;
          server 192.168.1.64:80;
          server 192.168.1.66:80;
          }
          server {
          listen 443;
          listen 80;
          server_name ec.ben.com;

          ssl on;
          ssl_certificate /usr/local/nginx-0.6.35/key/server07.cer;
          ssl_certificate_key /usr/local/nginx-0.6.35/key/server07.pem;
          ssl_session_timeout 5m;
          ssl_protocols SSLv2 SSLv3 TLSv1;
          ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
          ssl_prefer_server_ciphers on;
          error_page 497 “https://$host$uri?$args”;
          location / {
          root html;
          index index.html index.htm;
          proxy_redirect off;
          proxy_set_header Host $host;
          proxy_set_header X-Real-IP $remote_addr;
          proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
          proxy_pass http://winalite.com;
          }

          error_page 500 502 503 504 /50x.html;
          location = /50x.html {
          root html;
          }
          }
          }
          nginx的安裝和參數(shù)就不詳細(xì)敘述了。自己慢慢研究吧。我就這么配置起來的。現(xiàn)在session復(fù)制和負(fù)載均衡都正常了。

          后續(xù)
          現(xiàn)在跑應(yīng)用的時(shí)候出現(xiàn)一個(gè)奇怪的現(xiàn)象
          每次提交表單查詢就會(huì)出現(xiàn)這樣的現(xiàn)象。少個(gè)問號(hào)
          https://192.168.1.62/wecs/poMemb … entMoney=1005337600
          正常的應(yīng)該是下面這樣
          https://192.168.1.62/wecs/poMemb … entMoney=1005337600
          如果直接單獨(dú)訪問tomcat1和tomcat2都是正常的。就是通過nginx的負(fù)載均衡方式訪問就會(huì)出現(xiàn)這樣的現(xiàn)象
          問題已經(jīng)解決了,希望對(duì)大家能有幫助
          error_page 497 “https://$host$uri$is_args$args”;
          增加了$is_args

          posted @ 2010-12-17 12:46 小馬歌 閱讀(801) | 評(píng)論 (0)編輯 收藏
           
          首先,編譯nginx時(shí)要打開SSL:
          ./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module
          make && make install

          可以參考默認(rèn)的配置文件,打開https訪問:

              server {
                  listen       443;
                  server_name  localhost;

                  ssl                  on;
                  ssl_certificate      cert.pem;
                  ssl_certificate_key  cert.key;

                  ssl_session_timeout  5m;

                  ssl_protocols  SSLv2 SSLv3 TLSv1;
                  ssl_ciphers  ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
                  ssl_prefer_server_ciphers   on;

                  location / {
                      root   html;
                      index  index.html index.htm;
                  }
              }

          接下來在nginx安裝目錄的conf下創(chuàng)建自行簽名的證書。
          生成RSA密鑰:
          [root@renzhe conf]# openssl dsaparam -rand -genkey -out myRSA.key 1024
          0 semi-random bytes loaded
          Generating DSA parameters, 1024 bit long prime
          This could take some time
          ..+...+............+...................+................+...+......+.....+....+.....+.............................
          +....+.+++++++++++++++++++++++++++++++++++++++++++++++++++*
          .........+...............................+...........+.........+................+............+...+...........+...+
          ..............+.....+.+.+.....+...+.....+....+...................+............+............+..+.....+.........+...
          ...+......+......+..+.....................+...............+...............+.+............+...+++++++++++++++++++++
          ++++++++++++++++++++++++++++++*

          生成CA密鑰:(要輸入一個(gè)自己記得的密碼)
          [root@renzhe conf]# openssl gendsa -des3 -out cert.key myRSA.key
          Generating DSA key, 1024 bits
          Enter PEM pass phrase:
          Verifying - Enter PEM pass phrase:

          用這個(gè)CA密鑰來創(chuàng)建證書:
          [root@renzhe conf]# openssl req -new -x509 -days 365 -key cert.key -out cert.pem
          Enter pass phrase for cert.key:     ###此處輸入上一步的密碼
          You are about to be asked to enter information that will be incorporated
          into your certificate request.
          What you are about to enter is what is called a Distinguished Name or a DN.
          There are quite a few fields but you can leave some blank
          For some fields there will be a default value,
          If you enter '.', the field will be left blank.
          -----
          Country Name (2 letter code) [GB]:CN
          State or Province Name (full name) [Berkshire]:GuangDong
          Locality Name (eg, city) [Newbury]:GuangZhou
          Organization Name (eg, company) [My Company Ltd]:Init5.cn
          Organizational Unit Name (eg, section) []:security
          Common Name (eg, your name or your server's hostname) []:security.init5.cn   ###此處最好跟https的域名保持一致
          Email Address []:wulei5482@163.com

          把證書設(shè)置為root專用:
          [root@renzhe conf]# chmod 700 cert.*

          現(xiàn)在nginx可以啟動(dòng)了,https也已經(jīng)可以正常訪問。
          posted @ 2010-12-17 12:24 小馬歌 閱讀(438) | 評(píng)論 (0)編輯 收藏
           
          1.jconsole是隨著JDK 1.5而推出的。這是一個(gè)Java監(jiān)測(cè)和管理控制臺(tái)-JMX兼容的圖形工具來監(jiān)測(cè)Java虛擬機(jī)。它能夠同時(shí)監(jiān)測(cè)本地和遠(yuǎn)程的JVMs。詳情可查看:jconsole工具介紹



          2.VisualVM 集成了幾個(gè)現(xiàn)有的JDK軟件工具,輕量級(jí)內(nèi)存和CPU信息概要能力。這個(gè)工具被設(shè)計(jì)為同時(shí)在生產(chǎn)和開發(fā)時(shí)使用,進(jìn)一步提高監(jiān)視的能力和Java SE平臺(tái)的性能分析能力。


          http://www.alphaworks.ibm.com/tech/heapanalyzer
          3.HeapAnalyzer 能夠通過它采用啟發(fā)式搜索引擎和分析Java堆棧存儲(chǔ)信息發(fā)現(xiàn)可能的Java堆棧泄漏區(qū)域,它通過解析Java堆棧存儲(chǔ)信息,創(chuàng)建定向圖表,變換他們成定向樹和執(zhí)行啟發(fā)式搜索引擎。



          4.PerfAnal 是在Java 2平臺(tái)上為了分析應(yīng)用表現(xiàn)的一個(gè)基于GUI的工具。您能使用PerfAnal的辯認(rèn)性來查找出您需要調(diào)整的代碼。



          5.JAMon 是一個(gè)免費(fèi),簡單,高性能,安全,允許開發(fā)者容易地監(jiān)測(cè)生產(chǎn)應(yīng)用程序的Java API。



          6.Eclipse Memory Analyzer 是幫助您發(fā)現(xiàn)內(nèi)存泄漏和減少記憶消耗量的一臺(tái)快速和功能豐富的Java堆分析儀。



          7.GCViewer 一個(gè)免費(fèi)開源工具,使用Java VM屬性-verbose:gc 和-Xloggc生成可視化數(shù)據(jù)。它也計(jì)算垃圾收集相關(guān)的性能指標(biāo)(生產(chǎn)量、積累停留、最長的停留等等)。



          如果您正在運(yùn)行您的應(yīng)用程序在HP - UX平臺(tái),看看下面:

          8. HPjmeter

                1. 確定和診斷在HP-UX上運(yùn)行的java 應(yīng)用程序的問題;

                2. 監(jiān)察正在運(yùn)行的java應(yīng)用程序和分析切面數(shù)據(jù);

                3. 捕捉剖面數(shù)據(jù)與零制備時(shí),使用JDK / JRE的5.0.04或更高;

                4. 在HP - UX , Linux和Windows 系統(tǒng)上運(yùn)行HPjmeter控制臺(tái);

                5. 改善垃圾回收機(jī)制的表現(xiàn)。



          9.HPjconfig 是為調(diào)整您的HP-UX 11i HPIntegrity Itanium? 和HP 9000 PA-RISC系統(tǒng)核心參量的Java配置工具,匹配您的應(yīng)用的特征。 HPjconfig為專門制作您的HP-UX硬件工作臺(tái)提供核心參量推薦。他提供了保持和還原的功能,根據(jù)您的客戶的需要提供適合的建議,考慮到具體的Java和HP - UX的版本問題,HPjconfig決定所有最新的HP - UX的修補(bǔ)程序所需的Java性能和功能在系統(tǒng)上安裝,并提示出所有遺失或取代補(bǔ)丁。



          10.Java Out-of-Box Tool 一個(gè)獨(dú)立的捆綁安裝時(shí)將安裝啟動(dòng)( RC )的腳本,修改核心參量,重建核心和重新起動(dòng)系統(tǒng)。 在啟動(dòng)期間,啟動(dòng)腳本將修改系統(tǒng)tunables,因而為Java提供更好的Out of The Box行為。
          posted @ 2010-12-14 16:24 小馬歌 閱讀(223) | 評(píng)論 (0)編輯 收藏
          僅列出標(biāo)題
          共95頁: First 上一頁 56 57 58 59 60 61 62 63 64 下一頁 Last 
           
          主站蜘蛛池模板: 吉隆县| 鹤岗市| 泰和县| 扬州市| 长宁县| 鹤山市| 稷山县| 荆州市| 涿鹿县| 石狮市| 寻乌县| 罗源县| 万盛区| 达孜县| 吉木乃县| 贵港市| 柘城县| 民县| 广饶县| 高淳县| 宜黄县| 图木舒克市| 建昌县| 察哈| 惠东县| 兖州市| 长治市| 错那县| 淮南市| 军事| 吉水县| 观塘区| 汾阳市| 昌图县| 阳新县| 老河口市| 鄂温| 张北县| 祁门县| 北安市| 新昌县|