ZeBeVogue別館 このページをアンテナに追加 RSSフィード

2012年08月22日

ApacheとNode.jsを連携させる

サービスで使っているポート番号をiptablesで許可してあげればサービス自体は動く。が、それじゃ格好悪いし、セキュリティ上余計なポートは開きたくない。という事でApache経由でNode.jsにアクセスする方法をまとめました。

プロジェクトのディレクトリ構造

$ pwd
/var/www/proj
$ ls -lF
total 32
-rw-r--r-- 1 root root 2011 Aug 20 18:05 app.js
drwxr-xr-x 2 root root 4096 Aug 20 18:04 config/
drwxr-xr-x 2 root root 4096 Aug 20 18:01 helpers/
drwxr-xr-x 8 root root 4096 Aug 20 14:27 node_modules/
-rw-r--r-- 1 root root  266 Aug 20 13:19 package.json
drwxr-xr-x 4 root root 4096 Aug 20 13:19 public/
drwxr-xr-x 2 root root 4096 Aug 20 18:09 routes/
drwxr-xr-x 4 root root 4096 Aug 20 18:11 views/

http.conf

モジュールを有効化します。

LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so

vhost

/var/www/proj/publicをドキュメントルートに設定します。

ProxyPass/ProxyPassReverseを使い、proj.example.co.jpのリクエストをlocalhost:3000へ流します。

<VirtualHost *:80>
	ServerName proj.example.co.jp
	DocumentRoot "/var/www/proj/public"

	ProxyPass / http://localhost:3000/
	ProxyPassReverse / http://localhost:3000/

	ErrorLog /var/log/httpd/proj-error.log
	LogLevel warn
	CustomLog /var/log/httpd/proj-access.log combined
</VirtualHost>

これでほとんどは問題なかったんですが、Express上でリダイレクトをした際にhttp://localhost:3000/リダイレクトしてしまいました。これはconfig/config.jsを以下の様に設置し、リダイレクトのコードをドメイン名を使う事で回避する事にしました。

exports.config = {
	domain: 'proj.example.co.jp',
	port: 80
}
var config = res.app.get('config');
var domain_port = '';
if (config.config.port !== 80) {
    domain_port = config.config.domain + ':' + config.config.port;
} else {
    domain_port = config.config.domain;
}
res.redirect('http://' + domain_port + path);

投稿したコメントは管理者が承認するまで公開されません。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

リンク元
人気の記事

はてなブックマーク - 人気エントリー - 『ZeBeVogue別館』

1. CentOS 5.8にNode.jsをインストール - ZeBeVogue別館
2. meta の viewport - ZeBeVogue別館
3. jQueryで複数のイベントを割り当てる - ZeBeVogue別館
4. MacでPutty形式の秘密鍵を変換する - ZeBeVogue別館
5. smarty で携帯絵文字 - ZeBeVogue別館
6. DropboxのDatastore APIをさっそく使ってみた - ZeBeVogue別館
7. ChromeでAccess-Control-Allow-Originを停止させつつ、別アプリとして動かす - ZeBeVogue別館
8. PhantomJSでスクリーンショットを撮る&HTML2PDF - ZeBeVogue別館
9. Node.jsでAmazon S3にアップロードする方法 - ZeBeVogue別館
10. neu.Nodeを触ってみました - ZeBeVogue別館
11. Twitter Bootstrapのカルーセルをキーボードとスワイプで操作 - ZeBeVogue別館
12. PHPで簡単XPath(ATOM/RSS1.0) - ZeBeVogue別館
13. ExpressJSでのバリデーション(express-validator) - ZeBeVogue別館
14. Node.js/PHPでの様々な文字列ハッシュの生成 - ZeBeVogue別館
15. ApacheとNode.jsを連携させる - ZeBeVogue別館
16. gruntでJavaScript/CSSを結合・minify - ZeBeVogue別館
17. Node.js/ExpressJSでのファイルのアップロード - ZeBeVogue別館
18. PDFKitを使ってNode.jsからPDFを作成する - ZeBeVogue別館
19. node.jsからPhantomJSを使ってPDFを生成する - ZeBeVogue別館
20. node.jsのMVCフレームワークSails.jsを使ってみた - ZeBeVogue別館
21. Expressのルーティングの自動化(Node.js) - ZeBeVogue別館
22. ZeBeVogue別館
23. PhalconのWebToolsを使ってみる - ZeBeVogue別館
24. nodemailerでNode.jsからメールを送る - ZeBeVogue別館
25. yumでpgpool-IIをインストール - ZeBeVogue別館
26. Titaniumでadmobを利用する(Android編) - ZeBeVogue別館
27. Firefox OSでサンプル作ってみた - ZeBeVogue別館
28. reveal.jsで格好いいプレゼンを作ってみた - ZeBeVogue別館
29. WebViewのクリックイベントをTitaniumへ渡す - ZeBeVogue別館
30. YSlow for Firebugを日本語で便利に使う - ZeBeVogue別館