發表文章

目前顯示的是 11月, 2012的文章

Nginx as reverse proxy for Apache HTTP

圖片
下面設定主要讓Nginx可以作為另一台server的reverse proxy 也就是說前端Nginx+後端Apache HTTPD(這兩台不一定要在同一台server/ip) 先說明一下: 紅色部分是主要設定,http, https都一樣,意思是讓nginx可以重導某個ip的80 port,如果server設定在同一台,則apache httpd必須是與nginx不同port (ex: httpd --> 8000, nginx --> 80,則這邊設定就變成proxy_pass http://$http_host:8000;) 藍色部分是如果nginx, httpd server在不同台時候,可以強制將後端網頁的ip與相對位置的ip均轉譯成前端的伺服器ip server {     listen       80;     ....(skip)     location / {          ### Set headers ####         proxy_set_header Host $http_host;         proxy_set_header X-Real-IP $remote_addr;         proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;         ### Most PHP, Python, Rails, Java App can use this header ###          proxy_set_header X-Forwarded-Proto https;         proxy_redirect off;         proxy_pass http://123.123.123.123:80;     }    } server {     listen       443;     ssl on;      ssl_certificate /opt/local/etc/openssl/private/selfsigned.pem;     ssl_certificate_key /o

Nginx驗證設定檔案

滿好用的指令,希望可以減少一些production時候設定檔錯誤造成server無法work的狀況... # nginx -t nginx: the configuration file /opt/local/etc/nginx/nginx.conf syntax is ok nginx: configuration file /opt/local/etc/nginx/nginx.conf test is successful

我的最愛的另一個用途!

圖片
原以為我的最愛捷徑列只是一個放置url link的地方 但是在瀏覽Firefox的X-ray Goggle專案後 發現到一個奇妙的應用! X-ray Goggle放置的捷徑列: javascript:(function()%7Bvar%20script%3Ddocument.createElement(%27script%27)%3Bscript.src%3D%27 http://webxray.hackasaurus.org/webxray.js%27%3Bscript.className%3D%27webxray%27%3Bdocument.head.appendChild(script)%3B%7D)()%3B url decode後再經過排版後是這樣: javascript:(     function(){         var script=document.createElement('script');         script.src=' http://webxray.hackasaurus.org/webxray.js ';         script.className='webxray';document.head.appendChild(script);     } )(); 這邊可以看到,原來捷徑列可以用來直接針對頁面做Hack的動作...(網頁沒安全@@) X-ray Goggle是用它來做頁面DOM元件的進階處理...算是個非常方便的工具唷∼ 另外,可以想到有很多應用吧!! 這邊可以試試看一個簡單的Script... javascript:(function(){alert('Hello...');})(); 透過新增到我的最愛的動作: 1. 新增我的最愛 2. 寫入script... 3. 點選剛剛建立的書籤...

Nginx ssl offload for Tomcat in SmartOS

本篇的目的主要在使用Nginx Reverse Proxy的功能來卸載HTTPS SSL 也就是說Tomcat走HTTP 8080 Port,本身無HTTPS SSL 然後透過Nginx來加上HTTPS SSL,提供HTTPS服務於443 Port上 環境以MiCloud SmartOSPlus64為主 Environment # uname -a SunOS MiCloudDBT.local 5.11 joyent_20120808T224832Z i86pc i386 i86pc Solaris Installation # pkgin -y in  nginx-1.0.4 apache-tomcat-6.0.32 sun-jdk6-6.0.26  Servers Tomcat server: 123.123.123.123 (Port: 8080) Nginx server: 123.123.123.123 (Port: 80, 443) Nginx Configure (/opt/local/etc/nginx/nginx.conf) # 說明 - 此部份設定主要包含: # 1. 建立tomcat - nginx upstream設定 # 2. 設定Nginx https server over 443 port,並指定ssl key # 3. 設定欲轉址的Tomcat context(ex: http://123.123.123.123:8080/examples / --> https://123.123.123.123/examples /) # ps: http 80段落的設定(紫色),是強制將http 80的所有request轉導至https,必須有這個設定,不然每個tomcat的link都會被導到http而非https user   www  www; worker_processes  1; events {     worker_connections  1024; } http {     include       /opt/local/etc/nginx/mime.types;     default_type

Self Sign SSL

下面介紹兩種self sign ssl的作法 預期產出key: server.key, cert: server.csr兩個檔案 基本款: openssl genrsa -out server.key 1024 openssl req -new -key server.key -out certrequest.csr openssl x509 -req -in certrequest.csr -signkey server.key -out server.crt 增加移除key phase步驟: openssl genrsa -des3 -out server.key 1024 openssl req -new -key server.key -out server.csr cp server.key server.key.org openssl rsa -in server.key.org -out server.key openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt 於ExpressJs中,可以如下設定: Step 1: 產key 將產出的server.key, server.crt放到專案目錄下 Step 2: 設定建立https server所需之options var key = 'server.key'; var crt = 'server.crt' var privateKey = fs.readFileSync(key); var certificate = fs.readFileSync(crt); var options = {     key: privateKey,     cert: certificate, }; Step 3: 於createServer中加入key options https.createServer(options, app).listen(app.get('port'), function(){   console.log("Express server listening on port " +

Moto Razr Maxx (XT910) Flash to Moto Original Rom (EU version)

台版Razr刷到死機的朋友,只要"還有電",就都還有救.... 但是研究過所有XDA上的POST,大家似乎都可以用SBF刷得很順利... 不過,第一: Mac上沒有rsd_lite軟體,第二: 用PC的rsd_lite我也沒刷成功... 最後終於找到Reference這篇POST,可以刷回原廠的Rom,不過世EU版本的 好在我之前有透過BootMenu備份,可以再從BootMenu刷回來... 下面是刷回EU版的步驟: Moto Razr Maxx (XT910) Flash to Moto Original Rom (EU version) 下載下面Reference中提到的SBF壓縮檔案: 672.180.41.XT910.Retail.en.EU Fla****.rar Blur_Version.651.167.26.XT910.Retail.en.EU.zip SPDREM_U_01.6.5.1-167_SPU-15-M2-3_SIGNEuropeAustraliaEMEA_USASPDRRTGB_HWp2b_Servic e1FF_fastboot.xml.zip 進入fastboot mode: 解壓縮(1)之後,會得到其中一個boot_new.img,透過fastboot執行下面指令: ./moto-fastboot-osx flash boot ~/Download/ 672.180.41.XT910.Retail.en.EU \ FlashIT/boot_new.img 解壓縮(3)之後會得到其中一個system_signed檔案,透過fastboot執行下面指令: ./moto-fastboot-osx32 flash system ~/Downloads/Moto\ Razr/SBF/system_signed 進入Recovery mode: 將(2)放到SDCARD,然後透過Recovery mode安裝(2)中的zip檔案,安裝完之後重啟即可 附註:fastboot與其他廠牌的fastboot不太一樣,可到下面網址下載: http://forum.xda-developers.com/showthread.php?t=1138092 Reference:  h

Split in Shell Script

透過linux上的tr功能,寫shell也可以輕鬆的拆字喔∼ #!/usr/bin/env bash IN = " xxx@ooo.com , yyy@ooo.com " arr = $ ( echo $IN | tr "," "\n" ) for x in $arr do echo "> [$x]" done Result: [ xxx@ooo.com ] [ yyy@ooo.com ]
紙短情長,有興趣的朋友,歡迎直接瀏覽下面投影片~ 基礎篇,介紹Node.js基本Web能力與使用Node.js連接Google使用者認證,並介紹如何透過Node.js連接MySQL資料庫。 進階篇,NoSQL的簡介、CouchDB的簡介、並透過Node.js連接NoSQL資料庫之展示。

node.js mysql module 新舊版連線方式比一比

node.js mysql module 新舊版連線方式比一比 /* 連線設定部分,參數名稱相同,可以直接延用 */ var db_options = {      host: 'your.database.ip.address',     port: 3306,     user: 'username',     password: 'password',     database: 'db_name' }; /* (1) mysql@2.0.0-alpha4連線設定 */ var mysql = require('mysql') exports.db = mysql.createConnection(db_options);                                                                                                                                                              /* (2) mysql@0.9.6連線設定 */ var mysql = new require('mysql'), db = null; db = mysql.createClient(db_options); <-- 新版已經沒有mysql.createClient這個建構式了... /* (3) 這邊有一個比較安全的匯整寫法 */ if(mysql.createConnection) {     console.log('Using createConnection...');     db = mysql.createConnection(db_options);    //2.0的寫法 } else if(mysql.createClient) {     console.log('Using createClient...');     db = mysql.createClient(db_options);    // 0.9的寫法 } else