跳到主要內容

發表文章

目前顯示的是 十一月, 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 /opt/local/etc/openssl/private/selfsigned.pem;     ssl_prefer_server…

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%27http://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  application/octet-stream;     sendfile        on;     keepalive_timeo…

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 " + app.get('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: http://forum.xda-developers.com/showthread.php?t=1849…
紙短情長,有興趣的朋友,歡迎直接瀏覽下面投影片~

基礎篇,介紹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 {     console.log('Using Client...…