0

mod_proxy を使用して Apache を構成し、Dart Web アプリをローカルで開発しようとしていますが、正しくセットアップできないようです。

httpd.conf で、次の行を有効にしました。

LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so
Include conf/extra/httpd-vhosts.conf

httpd-vhosts.conf で、必要なものをセットアップしようとしましたが、機能していないようです。Jetty を使用して Eclipse から実行している春の Web アプリがあります。それで、それはオンhttp://localhost:8080です。次に、Dart Editor から Dart を実行すると、最終的にオンになります127.0.0.1:3030(ただし、「ログイン」などのリクエストの合計パスは: ですhttp://127.0.0.1:3030/C:/Users/CorayThan/dart/BlightedRealmUi/web/out/login)。

いずれにせよ、Apache にリクエストを 127.0.0.1:3030 から localhost:8080 にリダイレクトさせようとしています。httpd-vhosts.confで次のようにしようとしました:

<VirtualHost *:80>
    ServerAdmin test@localhost
    ServerName 127.0.0.1:3030

    ProxyPass / http://localhost:8080
    ProxyPassReverse / http://localhost:8080

    ErrorLog "logs/proxy-error.log"
</VirtualHost>

しかし、まったく機能していないようです。誰かが私がそれを修正する方法を提案したり、そもそもこれを行うためのより良い方法を提案したりできますか? (私は CORS や Jsonp を使用したくありません。クロスブラウザー互換の開発用の簡単なハックが必要なだけです。)

4

2 に答える 2

1

私は同じ問題を抱えていたので、Tomcat と dart アプリケーションの両方にプロキシを持つ仮想ホストを作成することで解決しました。大まかに、ここに私の仮想ホストがあります:

NameVirtualHost *:80
<VirtualHost *:80>
    ServerName dartapp

    <Location "/tomcat-application-context/">
        ProxyPass "http://localhost:8080/tomcat-application-context/"
        ProxyPassReverse "http://localhost:8080/tomcat-application-context/"
    </Location>
    <Location "/dart/">
        ProxyPass "http://127.0.0.1:3030/"
        ProxyPassReverse "http://127.0.0.1:3030"
    </location>
</VirtualHost>

通常、「Dartium で実行」すると、dart アプリへのフル パスを使用してアプリにアクセスします。

http://127.0.0.1:3030/full/path/to/web/app.html

代わりに、/full/path/to/web/app.html にプロキシの場所 (つまり、/dart/full/path/to/web/app.html) をプレフィックスとして付けて、Apache 仮想ホストにアクセスします。

http://dartapp:80/dart/full/path/to/web/app.html
于 2013-09-08T21:24:07.780 に答える
1

これができるかどうかわかりません.Dartがこのポートを使用しているため、上記のようにプロキシ機能を実行するために、VHostは80ではなく3030でリッスンする必要があります。以下はVhostからの抜粋ですCORSを使用してブラウザベースのcouchdbクライアントアクセスを許可するために、DartiumからCouchDbサーバーにプロキシするために使用するファイルですが、これはあなたが望むものではないかもしれません:-

<VirtualHost *:8080>
    <Proxy http://141.196.22.210:5984>
        Order deny,allow
        Allow from all 
    </Proxy> 
    RewriteEngine on
    RewriteCond %{REQUEST_METHOD} ^OPTIONS
    Header set Access-Control-Allow-Origin http://127.0.0.1:3030
    Header set Access-Control-Allow-Credentials true
    Header set Access-Control-Allow-Headers Content-Type
    Header merge Access-Control-Allow-Headers Authorization
    Header merge Access-Control-Allow-Headers Destination
    Header set Access-Control-Allow-Methods GET
    Header merge Access-Control-Allow-Methods POST
    Header merge Access-Control-Allow-Methods PUT 
    Header merge Access-Control-Allow-Methods OPTIONS
    Header merge Access-Control-Allow-Methods DELETE 
    Header merge Access-Control-Allow-Methods HEAD 
    Header merge Access-Control-Allow-Methods COPY
    Header set Access-Control-Max-Age 3600 

    ProxyRequests off
    ProxyPreserveHost Off
    KeepAlive Off

    ProxyPass / http://141.196.22.210:5984/ nocanon
    ProxyPassReverse / http://141.196.22.210:5984/
</VirtualHost>

したがって、私のクライアント アプリが Couch にログインすると、141.196.22.210:8080 が使用されます。

于 2013-08-15T08:53:14.140 に答える