2

grails アプリケーションを実行している tomcat サーバーに戻すリバース プロキシを作成する必要があります。私はいつも次のようなリバース プロキシの例を見てきました。

ProxyRequests Off
ProxyPass / http://localhost:8080/appname/
ProxyPassReverse / http://localhost:8080/appname/
ProxyPreserveHost On

ただし、すべてのアプリで、これを行うと、ページが表示され、次のようなコンテキストで静的が読み込まれます: /appname/static/[jsapp.js][mycss.css]

その結果、スタイルと機能性が失われます。したがって、私の回避策はこれを行うことです:

ProxyRequests Off
ProxyPass /appname/ http://localhost:8080/appname/
ProxyPass / http://localhost:8080/appname/
ProxyPassReverse /appname/ http://localhost:8080/appname/
ProxyPassReverse / http://localhost:8080/appname/
ProxyPreserveHost On

これはリバース リバース プロキシだと思います。いずれにせよ、それはハッキーに見え、(私が思うに)副作用があります。Tomcat コンテキストを含む URL を作成します: http://servername.com/appname/user/usernameの代わりにhttp://servername.com/user/username。スタイリングを失うことなく可能であれば、後者を好むでしょう。

ノート:

  • ベース URL:http://servername.com に移動すると、正常に動作します。その後にクリックしたリンクは、URL に「/appname/」という名前を付けます。
  • TomcatのアプリをROOTアプリにすることでこれを解決できると思いますが、そうしないことを好みます。
  • この例では HTTP を使用しています。通常は AJP プロトコルを使用しますが、最後に HTTP を試してみました。
  • これは NameVirtualHost 構成にあります。
  • Apache 2.2.15、Tomcat 7.0.27、CentOS リリース 6.2 (最終版)、Java バージョン「1.7.0_04」、Grails 2.0.4

私が違うことをする必要があることについて何か考えはありますか?

ありがとう。

4

1 に答える 1

1

この状況を解決するには、いくつかの方法があります。TomCat 内で仮想ホストを使用しているため、URL からアプリケーション名を削除しています。これを server.xml に追加します

<Host name="myapp.com"  appBase="myappbase" unpackWARs="true" autoDeploy="false">
    <Alias>www.myapp.com</Alias>

    <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
           prefix="myapp_access_log" suffix=".txt"
           pattern="%h %l %u %t &quot;%r&quot; %s %b" />

    <Context path="/thumbnails" docBase="/var/www/myapp/thumbnails" reloadable="true">

</Host>

$TOMCAT_HOME にディレクトリ「myappbase」を作成し、そこにアプリケーション WAR を ROOT.war としてアップロードします。アプリケーションはhttp://myapp.com:8080/から入手できます。

プロキシ構成は非常に単純です;-) 1 つの TomCat でより多くの仮想ホストを作成することもできます。

前述の構成には、http: //myapp.com/thumbnails/からアクセスできるディレクトリ エイリアス (サムネイル) も含まれており、次の方法で GSP で使用できます。

${ resource( dir: 'thumbnails', file: 'image01.png' ) }

最後に、UrlMappings.groovy に「静的」ディレクトリを設定することをお勧めします。これらのディレクトリは、URL をコントローラに変換する場合、およびその逆の場合は無視されます。

static excludes = [
        '/css*', '/js*', '/thumbnails*'
]
于 2012-06-26T11:21:35.497 に答える