6

/ var / wwwに2つのディレクトリ(たとえば、/ var / www/app1と/var/ www / app2)があり、そのエラーログを別のファイルに送信します。どちらも同じドメインに属しているので、別の仮想ホストに置くことはできないと思います。したがって、たとえば、次のようにアクセスします。

http:// localhost / app1

http:// localhost / app2

私はこのページに出くわしました:

Apacheでさまざまなサブディレクトリのアクセスログを生成する

そのソリューションはアクセスログに対して完全に機能します。ただし、「env」引数はErrorLogディレクティブでは機能しないようです。

この「発見」の前に、私はこれに取り組んでいましたが、これは間違っているようです。

<VirtualHost *:80>
  ServerAdmin ray@localhost

  DocumentRoot /var/www/app1

  <Directory />
    Options Indexes FollowSymLinks MultiViews
    AllowOverride None
    Order deny,allow
    allow from all
  </Directory>

  ErrorLog ${APACHE_LOG_DIR}/app1/error.log

  LogLevel warn

  CustomLog ${APACHE_LOG_DIR}/app1/access.log combined
</VirtualHost>

私は自分が何をすべきかについて少し迷っています。つまり、ErrorLogを機能させる方法がある場合、または各ディレクトリの仮想ホストの構成を続行する必要がある場合です。どんな助けでもいただければ幸いです!ありがとうございました!

4

3 に答える 3

8

なぜコンテキストでDirectoryオプションを設定するのですか?の代わりに使用/VirtualHost<Directory /var/www/app1><Directory />

Apache ErrorLogディレクティブのドキュメントにより、そのコンテキストはserver config, virtual host-です。つまり、サーバー全体またはに対してのみErrorLogを定義でき、 。に対しては定義できVirtalHostませんDirectory。したがって、異なるログを異なるファイルに送信する場合は、を使用SetEnvIfしてEnv変数を設定してみてください。あなたがいるディレクトリに依存して、それはとのようなものでなければなりませSetEnvIf Request_URI ^\/a1\/ a1SetEnvIf Request_URI ^\/a2\/ !a1a1次に、環境変数に応じてログを書き込みます。

于 2012-05-04T11:07:02.650 に答える
3

すべてのディレクトリにカスタムIDを設定すると、次のようにディレクトリごとにログを区切ることができます。

<Directory app1>
    SetEnv app1
</Directory>
<Directory app2>
    SetEnv app2
</Directory>
CustomLog ${APACHE_LOG_DIR}/site1.log combined env=app1
CustomLog ${APACHE_LOG_DIR}/site2.log combined env=app2
于 2019-07-25T19:39:16.217 に答える
2

最後に私はそれを行いました。最初にフォルダごとに内部サブドメインを作成し、proxypassを使用してサブドメインのコンテンツを渡します。

apache modsを有効にします:

a2enmod authz_core dir proxy proxy_http

/ etc / hosts

127.0.0.1       localhost
127.0.0.1       a.localhost
127.0.0.1       b.localhost

/etc/apache2/sites-available/default.conf

<VirtualHost *:80>
        ServerName localhost
        ServerAdmin fake@mail.com
        DocumentRoot "/dev/null"

        ProxyPass /a http://a.localhost/
        ProxyPassReverse /a http://a.localhost/
        ProxyPass /b http://b.localhost/
        ProxyPassReverse /b http://b.localhost/

        LogLevel debug

        ErrorLog ${APACHE_LOG_DIR}/default-error.log
        CustomLog ${APACHE_LOG_DIR}/default-access.log combined

</VirtualHost>

/etc/apache2/sites-available/a.conf

<VirtualHost *:80>
        ServerName a.localhost
        ServerAdmin fake@mail.com
        DocumentRoot "/Publikoa/a"

        <Directory "/Publikoa/a">
                DirectoryIndex index.html
                Require all granted
        </Directory>

        LogLevel debug

        ErrorLog ${APACHE_LOG_DIR}/a-error.log
        CustomLog ${APACHE_LOG_DIR}/a-access.log combined

</VirtualHost>

/etc/apache2/sites-available/b.conf

<VirtualHost *:80>
        ServerName b.localhost
        ServerAdmin fake@mail.com
        DocumentRoot "/Publikoa/b"

        <Directory "Publikoa/b">
                DirectoryIndex index.html
                Require all granted
        </Directory>

        LogLevel debug

        ErrorLog ${APACHE_LOG_DIR}/b-error.log
        CustomLog ${APACHE_LOG_DIR}/b-access.log combined

</VirtualHost>

サイトを有効にする:

a2ensite default a b

apacheを再起動します。

/etc/init.d/apache2 restart
于 2018-05-01T13:03:32.190 に答える