38836


下記の通り、Apache + node.js の連携でパスを付加するとエラーが発生します。  
私はどのようにすれば連携に成功しますか？  
よろしくお願いします。

* * *

scotch.io の tutorial で node.js を勉強しています。

  * Getting Started with Node, Express and Postgres Using Sequelize  
<https://scotch.io/tutorials/getting-started-with-node-express-and-postgres-
using-sequelize>

何となく仕組みが分かったつもりで、本番環境に合わせて Apache 2.2 と連携してみました。  
ルートではなくパスを付加してみました。

**conf/httpd-proxy.conf**

[code]

    <Location /scotch>
      ProxyPass http://127.0.0.1:8000/
      ProxyPassReverse http://127.0.0.1:8000/
      Order deny,allow
      Deny from all
      Allow from all
    </Location>
    
[/code]

チュートリアルにあるように ttp://127.0.0.1:8000/api/todosに向けての POST は成功します。

ttp://127.0.0.1/scotch/api/todos だとエラーが返ってきます。

[code]

    <!DOCTYPE html>
    <html lang="en">
        <head>
            <meta charset="utf-8">
            <title>Error</title>
        </head>
        <body>
            <pre>Cannot POST //api/todos/</pre>
        </body>
    </html>
    
[/code]


CC BY-SA 3.0
2017-10-18T03:08:52.740
38818
2017-10-18T10:05:16.937
25808
question
node.js apache
Apache と node.js の連携でURLパスを付加したい


ドキュメントに

> もし第一引数が / で終端するならば、第二引数も / で終端すべきです。逆もまた然りで、第一引数が終端しないならば、
> 第二引数も終端すべきではありません。 これに反すると、バックエンドサーバ向けに変換されたリクエストは
> 必要なスラッシュを欠く可能性があり、バックエンドサーバは期待する結果を返しません。  
>  \--[mod_proxy - Apache HTTP サーバ バージョン
> 2.2](https://httpd.apache.org/docs/2.2/ja/mod/mod_proxy.html#proxypass)

とあるのがまさにこれでは無いでしょうか。

試していないので推測ですが

[code]

      <Location /scotch/>
        ProxyPass http://127.0.0.1:8000/
        ProxyPassReverse http://127.0.0.1:8000/
      </Location>
    
[/code]

or

[code]

    <Location /scotch>
      ProxyPass / http://127.0.0.1:8000
      ProxyPassReverse / http://127.0.0.1:8000
    </Location>
    
[/code]

or

[code]

    <Location /scotch>
      ProxyPass http://127.0.0.1:8000
      ProxyPassReverse http://127.0.0.1:8000
    </Location>
    
[/code]

あたりのいずれかは求める挙動になるのでは？


CC BY-SA 3.0
2017-10-18T10:05:16.937
38836
2017-10-18T10:05:16.937
2376
38818
answer