Apache VirtualHost 403 Forbidden


123

最近、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 admin@mytest.com
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。このサイトの多くの機能はサイト名に依存するため、ドメイン名でサイトにアクセスできる必要があります。

別のファンキーなことは、すべてのログファイルが正しく作成されていても、このエラーに関する情報がないことです。

ハマった。誰か助けてもらえますか?


次のコンテンツを追加できますかsudo sh -c ". /etc/apache2/envvars; apache2 -S"(仮想ホストのリスト)および:sudo sh -c ". /etc/apache2/envvars; grep -R Listen /etc/apache2/*|grep -v \"#\"; grep -R NameVirtual /etc/apache2/*|grep -v \"#\""
regilero

以下の最初のコマンドが返す: VirtualHost configuration: 192.168.2.5:* www.mytest.com (/etc/apache2/sites-enabled/mytest.com:1) Syntax OK 秒1を返します: /etc/apache2/ports.conf:Listen 80 /etc/apache2/ports.conf: Listen 443 /etc/apache2/ports.conf: Listen 443 /etc/apache2/conf.d/virtual.conf:NameVirtualHost *
Yuchen王

回答:


296

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>

3
仮想ホストを使用してこの問題が発生している場合は、apache / conf / extra / httpd-vhosts.confファイル内の各仮想ホスト設定に「すべて許可」を追加する必要があることに注意してください。
Soundfx4 2015

1
このディレクティブをに追加/etc/apache2/apache2.confしましたが、役に立ちました。ありがとうございます。
DmitMedv 2015

@ Soundfx4、apache/conf/extra内部にフォルダはありません/etc/apache2
Black

/var/dev/website.comを追加したところ、403エラーが発生しました。提案されたディレクティブを/etc/apache2/apache2.conf(ubuntu)に追加するとうまくいきました。みんなありがとう!
LoveFineArt 2016年

ありがとうございます。最近、Apacheは動作しにくくなっています...
OoDeLally

15

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>

8

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

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

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

を使用しているAllow from allので、順序は関係ありませんが、デフォルトの動作を「許可」Deny,Allowに設定するように切り替えることもできます。


4
書き込み可能?本当に?よくわかりません
php-dev

5

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

長い間、私もナッツを運転しました。理由がわからない。これはDebianのものです。


わあ、それはとても変だ。
kako-nawao 2015年


0

すべてが正しく行われた場合は、次のようにホームディレクトリに権限を付与します。

sudo chmod o+x $HOME

その後

sudo systemctl restart apache2


0

Arch Linuxでもこの問題がありました...少し時間がかかりますが、間違いを見つけてうれしいです:

私の.htmlアカウントにあるファイルのある私のディレクトリ。
すべてをオンに設定しましたr+xが、まだ403エラーが発生します。
私は完全に戻って、ホームディレクトリ実行するように設定して、問題を解決しました。


-1

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

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

find htdocs -type f -exec chmod 664 {} + -o -type d -exec chmod 775 {} +

私は664と775の違いが何であるかわからない私はこのように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

端末でピコを使って編集します

また、画像のディレクトリも作成しました。これにより、ブラウザーのアドレスバーdomainname.com/imagesに入力すると、ダウンロードできる写真のリストが表示され、正常に動作している画像ファイルを示すために正常にダウンロードする必要があります。

<Directory /usr/local/apache2/htdocs/images>
AddType images/png .png
</Directory>

そして、それらは私が試した解決策です、今私は機能している画像を持っています...そうです!!!

次の問題へ

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.