ubuntuのApacheではvhostを設定しましたが、ブラウザーで「403 Access forbidden」エラーが発生し続けます。ログには、「サーバー構成によってクライアントが拒否されました:/ home/remix /」と記載されています。
オンラインで解決策を探したところ、ディレクトリアクセスに関する多くの投稿(Allow from allなど)が見つかりましたが、私の知る限り、既にそれを行っています。 httpd-vhosts.confには、次のコードがあります。
NameVirtualHost *:80
<VirtualHost *:80>
ServerAdmin [email protected]
DocumentRoot "/opt/lampp/htdocs/"
ServerName localhost
ServerAlias localhost
ErrorLog "logs/dummy-Host.example.com-error_log"
CustomLog "logs/dummy-Host.example.com-access_log" common
</VirtualHost>
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot "/home/remix/"
ServerName testproject
ServerAlias testproject
<Directory "/home/remix/">
Options Indexes FollowSymLinks Includes ExecCGI
AllowOverride All
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
私も追加しました
127.0.0.1 testproject
/ etc/hostsファイルに。
また、/ home/remix /フォルダーにはindex.htmlファイルが含まれ、httpd.confでvhostsが有効になっています。
見えないものはありますか?
編集:これはApache error_logエントリです。
[Sat Aug 18 09:15:32.666938 2012] [authz_core:error] [pid 6587]
[client 127.0.0.1:38873] AH01630: client denied by server configuration: /home/remix/
承認構成を変更します。
<Directory /home/remix/>
#...
Order allow,deny
Allow from all
</Directory>
...同じもののApache 2.4バージョンに。
<Directory /home/remix/>
#...
Require all granted
</Directory>
アップグレードの概要ドキュメント を確認して、必要になる可能性のあるその他の変更について確認します。また、Google(およびこのサイト)で見つけた構成の例と支援のほとんどは、 2.2を参照してください。
ディレクトリの権限を確認してください。たとえば、自分以外のアクセスを拒否するように設定されていると思います。
$ ls -ld /home/remix
drwx------ 92 remix remix 4096 Aug 17 22:59 /home/remix
drwx------
が正確に表示される場合は、これが事実です。次のコマンドを実行して修正します。
chmod a+x /home/remix
httpd
サービスを実行しているユーザーがこのディレクトリにアクセスできることを確認してください。
「サーバー構成によってクライアントが拒否されました」とは、ApacheではなくLinuxサーバー自体がファイルへのアクセスを禁止することを意味します。
権限/所有権/グループメンバーシップを変更してアクセスを提供しても問題が解決しない場合、ルートの原因は、SELinuxが適切なSE Linuxコンテキストを持たないフォルダーへのアクセスを禁止している可能性があります 'Relocationing an Apache DocumentRoot under Selinux ' 。
setenforce 0
を実行してSELinuxを一時的に無効にすると、ファイルがアクセス可能になりますsetenforce 0
を実行してSELinuxを再度有効にすると、ファイルに再びアクセスできなくなります次に、ファイルのアクセス許可が何であれ、SELinuxによってアクセスが確実に禁止されます。
人々にこの問題を引き起こす可能性のあるもう1つの単純な(ただしトリッキーな落とし穴)は、ユーザーディレクトリが/ home/*にない場合です。/nethome/*
提供されたuserdir.confには次のようなものが含まれています(ただし、Userdir:は無効になっています)。
$ cat /etc/httpd/conf.d/userdir.conf
<IfModule mod_userdir.c>
UserDir enabled
UserDir public_html
</IfModule>
<Directory "/home/*/public_html">
AllowOverride FileInfo AuthConfig Limit Indexes
Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
Require method GET POST OPTIONS
</Directory>
ディレクトリの仕様は〜user ==/home/userを想定しています。ユーザーのホームディレクトリが実際に存在する場所のディレクトリ仕様を変更または追加するだけです。
かなり明白ですが、理解するのにしばらく時間がかかりました!! :-P DUH!
例えば〜user ==/nethome/user
<Directory "/nethome/*/public_html">
AllowOverride All
Options MultiViews Indexes Includes FollowSymLinks
Require all granted
</Directory>
一般に、そのディレクトリに対するより多くのオープンな承認も参照してください。
私の場合、アプリケーション(phpMemcacheAdmin)を追加しましたが、デプロイメントスタックにマウントを追加するのを怠っていたため、起動時にマウントがありません(kubernetesなど)。私は1時間かけて余分なスラッシュの削除とアクセス許可の変更をいじくり回し、最後にシェルを実行して、そこにさえないことを確認しました。
K8sにデプロイしようとしている場合は、hostPathを使用している場合は、次のものがあることを再確認してください。
...
volumeMounts:
- mountPath: /opt/phpMemcacheAdmin
name: memcached-admin
...
- hostPath:
path: /...../opt/phpMemcacheAdmin
type: ""
name: memcached-admin