Help us understand the problem. What is going on with this article?

WordPressなどにリバースプロキシする際にバックエンドのホスト名でURL生成されるのを防ぐ

More than 3 years have passed since last update.

wordpressなど、バックエンド側でサーバ変数のHTTP_HOSTを使用してURLを生成しているスクリプトがある場合、リバースプロキシの設定のProxyPreserveHostをOnにすることで、バックエンドのホスト名でURLが生成されるのを防ぐことができます。

ProxyPreserveHostは、バックエンドへのプロキシの要求に、クライアントがリクエストしたホスト名を伝播します。
http://httpd.apache.org/docs/2.4/ja/mod/mod_proxy.html#proxypreservehost

バックエンドで動作しているPHPなどのスクリプトは、URLを組み立てる際$_SERVER['HTTP_HOST']を使用します。

HTTP_HOSTには、[現在のリクエストに Host: ヘッダが もしあればその内容]が入っているので、バックエンドのスクリプトは、クライアントがリクエストしたホスト名(public.co.jp)からURLを組み立てます。
http://php.net/manual/ja/reserved.variables.server.php

ただし、この方法は、バックエンドのサーバが別の用途でも使用されている場合は、注意が必要です。
特に、HTTP_HOSTを単に自ホスト名として利用しているスクリプトがある場合は、プロキシすることで、意図しないURLを生成したりするかもしれません。

<VirtualHost public.co.jp:80>

    ServerName public.co.jp
    DocumentRoot /var/www/html
    ErrorLog /var/log/httpd/error_log
    CustomLog /var/log/httpd/access_log combined

    # Reverse Proxy settings.
    # Cookie's proxy settings.
    ProxyPassReverseCookieDomain public.co.jp backend.co.jp
    ProxyPassReverseCookiePath / /

    # プロキシリクエストに、受け付けた Host HTTP ヘッダを使う.
    # Using accepted Host HTTP header at proxy request.
    # @see http://httpd.apache.org/docs/2.4/ja/mod/mod_proxy.html#proxypreservehost
    ProxyPreserveHost On

    #wordpress
    ProxyPass /wp/ http://backend.co.jp/wp/
    ProxyPassReverse /wp/ http://backend.co.jp/wp/

</VirtualHost>
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした