(未解決)バーチャルホストで運用しているサーバに対してnginxのリバースプロキシ

投稿者: | 2016年7月11日

【概要】

nginxでリバースプロキシサーバを運用

  1. example.com/dir1/はs3のbucketに。
  2. example.com/dir2/は別のアプリサーバに。ここはapacheのデフォルトでアプリを運用している(バーチャルホストを使っていないということ)。
  3. example.com/dir3/は別サーバでバーチャルホストで運用しているドメインに。

 

【問題点】

httpでは問題なくリバースプロキシとして運用できた。
httpsでは1、2は問題なかったが、3だけ上手く行かなかった。

 

【まずは問題なくできた設定について】

(ポート80[httpアクセス]に対する設定)

  • bucketに対する設定: 単純にproxy_passの設定だけ。
  • 別アプリサーバに対する設定: 各種proxy_set_headerを設定して、proxy_passを設定。
  • 別サーバのバーチャルホストで運用しているドメインに対する設定: 単純にproxy_passの設定だけ。

(ポート443[httpsアクセス]に対する設定)

  • bucketに対する設定: 単純にproxy_passの設定だけ。httpsアクセスする。
  • 別アプリサーバに対する設定: 各種httpヘッダをproxy_set_headerで設定して、proxy_passを設定。

 

【ポート443[httpsアクセス]に対する設定の3について】

  • proxy_passだけ設定してみた。(httpsアクセスなので、proxy_passに設定するURLもhttps)
    → nginxの502エラーがでる。これはちょっと意味が分からなからない。
  • proxy_passと各種httpヘッダをproxy_set_headerで設定する
    → 404エラーがでる。バーチャルホストを設定しているサーバに対して、該当のHostが認識されず、そのホストのdefaultの設定で処理されているっぽい。バーチャルホストのデフォルトではなくIPアドレスでアクセスされているかのような挙動をする。
    httpsだとhostの値が渡されないという情報もweb上にあった。「httpディレクティブにproxy_set_headerを設定すれば良い」とあるが、この設定をしてもだめだったということ。
  • proxy_passで、URLの指定をhttpとしてみたらエラーとならなかった。ただし、httpとしてリバースプロキシしているので、コンテンツの中にhttpコンテンツがあり、mixed_contentとなる。ものによってはjs等が正常に読み込まれずページが崩れたりする。

 

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

*

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)