web-dev-qa-db-ja.com

Apache VirtualHost 403禁止

最近、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つの面白い点は、すべてのログファイルが適切に作成されていても、このエラーに関する情報がないことです。

ハマった。誰でも助けることができますか?

111
Yuchen Wang

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>
273
Phil L

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>
12
GAV

これは権限の問題である可能性があります。

仮想ドキュメントルートへのすべての親パスは、Webサーバーのhttpdユーザーによって読み取り可能、書き込み可能、​​および実行可能である必要があります

このページ Apache 403エラーについて。

Allow from allを使用しているため、順序は重要ではありませんが、Deny,Allowに切り替えて デフォルトの動作 を「許可」に設定してみてください。

8
Pops

Directory句を仮想ホストの外に移動し、仮想ホストを宣言する前に配置します。

長い間私にも夢中になった。理由がわかりません。これはDebianのものです。

5
samtresler

Ubuntu 14.04の仮想ホストで同じ問題が発生していました

私にとっては、次のソリューションがうまくいきました:

http://ubuntuforums.org/showthread.php?t=2185282

<Directory >タグを/etc/Apache2/Apache2.confに追加するだけです

0
Roland

問題は、ファイルのアクセス許可が間違っていたことです。

ディレクトリの権限を変更しましたが、うまくいきました。

0

私はこの愚かな問題に数時間を費やしました

まず、ターミナルでこれを使用して権限を変更します

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
0
cagcak