タイトル

Need for Answer

2014年12月19日金曜日

gateがvHost対応したのでテンプレ的なコンフィグ作ってみた

gate使ってますか!
自サイトにお手軽にgoogle認証を組み込めるという、夢のプロダクトです!

Ver0.4でついにvhost対応されました。これで『トップディレクトリからのパスを変更すると動かなくなるプロダクト』でも問題なく動かせるようになりました!ヤッタネ!

…ということで、コンフィグのテンプレ的なものを作ってみました。

#==========================================
# Config for gate
#==========================================
# Gate の待ち受けポート
# Forwardポートは最下部で設定
address: :8888

#==========================================
# ssl keys (optional)
#==========================================
# ssl:
#   cert: ./ssl/ssl.cer
#   key: ./ssl/ssl.key

#==========================================
# 認証
#------------------------------------------
# Github または google認証
#==========================================
auth:
  session:
    # authentication key for cookie store
    key: secret456
    cookie_domain: hoge.com

  info:
    # oauth2 provider name (`google` or `github`)
    # google または github
    service: google

    # your app keys for the service
    client_id: [googleAPI_ID]
    client_secret: [googleAPI_secret] 
    # your app redirect_url for the service:
    # if the service is Google, path is always "/oauth2callback"
    redirect_url: http://hogehoge.hoge.com/oauth2callback

   #--------------------------------------
   # 制限ユーザー
   #--------------------------------------
   # restrict user request. (optional)
   # restrictions:
   #  - hoge.com    # domain of your Google App (Google)
   #  - @gmail.com # specific email address (same as above)
   #  - your_company_org  # organization name (GitHub)

#==========================================
# document root for static files
#==========================================
htdocs: ./htdocs

#==========================================
# proxy 設定
#==========================================
proxy:
  - path: /
    host: hogehoge.hoge.com
    dest: http://127.0.0.1:8080

2014年12月4日木曜日

ELB配下にあるDjangoにリクエストプロトコルを判断させたい

ELB配下にあるEC2にプロトコルを渡したい、そんなこと有りますよね!
何が困ってそんなことをって話なのですが、下記2点に該当する人だと思います。

  1. ELBにSSLアクセラレーションさせてる(HTTPS→HTTP変換)
  2. EC2にApache→Djangoを使ってる
で詳細な問題って何?な話なのですが、「ELBが渡してくるリクエストヘッダと、Djangoが解釈するリクエストヘッダが微妙に違う」ってことです。ちなみにこんなかんじです。

  • ELBが送るリクエストヘッダ → X-Forwarded-Proto:https
  • Djangoが解釈したいリクエストヘッダ → X-Forwarded-Protocol:https

なので、「リクエストヘッダの内容を判断して、Djangoに送るヘッダを書き換えよう」ってのが具体的なアクションになります。

という事で、Apacheのconfigを作ってみました。


#
# for Django
#
LoadModule headers_module modules/mod_headers.so
LoadModule setenvif_module modules/mod_setenvif.so
SetEnvIf X-Forwarded-Proto https PROTO_HTTPS
RequestHeader set X-Forwarded-Protocol "https" env=PROTO_HTTPS