最近、Apacheでテストサーバーをセットアップしようとしました。サイトはドメインwww.mytest.com
で実行する必要があります。常に403 Forbidden
エラーが発生します。 Ubuntu 10.10サーバーエディションを使用しています。ドキュメントルートはdir /var/www
の下にあります。以下は私の設定です:
/ var/wwwの内容
ls -l /var/www/
total 12
drwxr-xr-x 2 root root 4096 2011-08-04 11:26 mytest.com
-rwxr-xr-x 1 root root 177 2011-07-25 16:10 index.html
サーバー上のホストファイルの内容(IP 192.168.2.5)
cat /etc/hosts
127.0.0.1 localhost
127.0.1.1 americano
192.168.2.5 americano.mytest.com www.mytest.com
# The following lines are desirable for IPv6 capable hosts
::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
サイト構成
<VirtualHost *>
ServerAdmin [email protected]
ServerName www.mytest.com
ServerAlias mytest.com
DocumentRoot "/var/www/mytest.com"
ErrorLog /var/log/Apache2/mytest-error_log
CustomLog /var/log/Apache2/mytest-access_log combined
#
# This should be changed to whatever you set DocumentRoot to.
#
<Directory "/var/www/mytest.com">
Options -Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
ドキュメントルートに.htaccess
ファイルがありません。許可が正しく設定されています(www-dataで読み取り可能)。
デスクトップからIPアドレスを入力すると、サイトが正しく表示されます。 www.mytest.com
がサーバーのIPを指すように、デスクトップ上のhostsファイルを変更しました。使用すると、403
が返されます。このサイトの多くの機能はサイト名に依存するため、ドメイン名でサイトにアクセスできる必要があります。
もう1つの面白い点は、すべてのログファイルが適切に作成されていても、このエラーに関する情報がないことです。
ハマった。誰でも助けることができますか?
Apache 2.4.3(またはそれより少し前)に、このエラーが発生することが多い新しいセキュリティ機能が追加されました。 「クライアントはサーバー構成によって拒否されました」という形式のログメッセージも表示されます。この機能では、ディレクトリにアクセスするためのユーザーIDが必要です。 Apacheに同梱されているhttpd.confのDEFAULTによってオンになります。ディレクティブで機能の有効化を確認できます
Require all denied
これは基本的に、すべてのユーザーへのアクセスを拒否することを意味します。この問題を解決するには、拒否されたディレクティブを削除する(またははるかに良い)ために、アクセスを許可するディレクトリに次のディレクティブを追加します。
Require all granted
のように
<Directory "your directory here">
Order allow,deny
Allow from all
# New directive needed in Apache 2.4.3:
Require all granted
</Directory>
Apache Ubuntu 2.4.7の場合、Apache2.confで仮想ホストをホワイトリストに登録する必要があることがようやくわかりました。
# access here, or in any related virtual Host.
<Directory /home/gav/public_html/>
Options FollowSymLinks
AllowOverride None
Require all granted
</Directory>
Directory句を仮想ホストの外に移動し、仮想ホストを宣言する前に配置します。
長い間私にも夢中になった。理由がわかりません。これはDebianのものです。
Ubuntu 14.04の仮想ホストで同じ問題が発生していました
私にとっては、次のソリューションがうまくいきました:
http://ubuntuforums.org/showthread.php?t=2185282
<Directory >
タグを/etc/Apache2/Apache2.conf
に追加するだけです
問題は、ファイルのアクセス許可が間違っていたことです。
ディレクトリの権限を変更しましたが、うまくいきました。
私はこの愚かな問題に数時間を費やしました
まず、ターミナルでこれを使用して権限を変更します
find htdocs -type f -exec chmod 664 {} + -o -type d -exec chmod 775 {} +
664と775の違いがわからない
/usr/local/Apache2/htdocs
find htdocs -type f -exec chmod 775 {} + -o -type d -exec chmod 775 {} +
これはもう一つの愚かなことです
たとえば、画像のソースリンクがドメイン名であることを確認してください
src="http://www.fakedomain.com/images/photo.png"
必ず持ってください
EnableSendfile off in httpd.conf file
EnableMMAP off in httpd.conf file
ターミナルでpicoを使用して編集します
また、ブラウザのアドレスバーにdomainname.com/imagesと入力すると、ダウンロードできる写真のリストが表示され、正常に動作している画像ファイルを示すために正常にダウンロードする必要があるように、画像用のディレクトリも作成しました。
<Directory /usr/local/Apache2/htdocs/images>
AddType images/png .png
</Directory>
そして、それらは私が試した解決策です、今、私は機能している画像を持っています...いや!!!
次の問題へ
すべてを正しく行った場合、次のようにホームディレクトリにアクセス許可を与えるだけです。
Sudo chmod o+x $HOME
それから
Sudo systemctl restart Apache2