Apache 403 の禁止を解決するにはどうすればよいですか?
apache httpd サーバー 403 禁止問題
1. 問題の説明
apache2 の httpd 設定では、 403 はさまざまな場面で登場します。
httpd サービスをインストールしたばかりなので、もちろん 403 問題は発生しません。この問題は主に、いくつかの構成を変更した後に発生します。問題の説明は次のとおりです:
DocumentRoot ディレクトリのポイントを変更した後、サイトで 403 エラーが発生しました。
仮想ホスト ディレクトリを設定すると 403 が発生する場合もあります。
Apache の httpd サービスは正常に開始されました。正常に見えますが、アクセスする権限がありません。
ログが表示されます: へのアクセス / 拒否 (ファイルシステム パス '/srv/lxyproject/wsgi/) django.wsgi ') パスのコンポーネントに検索権限がないためです。
仮想ディレクトリを設定した後、エラー ログが表示されます: サーバー構成によりクライアントが拒否されました: /srv/lxyproject/wsgi/django.wsgi
2. 問題と解決策の分析
以下の手順に従って問題を解決するときは、エラー ログの内容に注意してください。はい、始めます。
1. httpd.conf のディレクトリ設定ファイル
たとえば、DocumentRoot が変更されたことが示されている場合は、「/usr/local/site/test」に変更されます。 mkdirを使用してsiteディレクトリとtestディレクトリを作成し、testディレクトリ配下にindex.htmlを配置します。この場合、httpd.conf の設定を確認する必要があります。
あなたの <ディレクトリ "/usr/local/site/test"> は DocumentRoot と一致している必要があります。このディレクトリは Apache のディレクトリへのアクセス許可設定であるためです。正しいディレクトリのみが設定されており、DocumentRoot は効果。
<Directory "/usr/local/site/test"> # # Possible values for the Options directive are "None", "All", # or any combination of: # Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews # # Note that "MultiViews" must be named *explicitly* --- "Options All" # doesn't give it to you. # # The Options directive is both complicated and important. Please see # http://httpd.apache.org/docs/2.4/mod/core.html#options # for more information. # Options Indexes FollowSymLinks # # AllowOverride controls what directives may be placed in .htaccess files. # It can be "All", "None", or any combination of the keywords: # Options FileInfo AuthConfig Limit # AllowOverride None # # Controls who can get stuff from this server. # Require all granted </Directory>
2. ディレクトリ アクセス許可
設定が 403 のままの場合、最初の手順は正しいです。ディレクトリ設定
[すべてから許可] または [すべての処理許可を要求] に設定できます。
3. ディレクトリのアクセス許可
まだ 403 である場合は、Web サイトのディレクトリのアクセス許可に問題がある可能性があります。
Apache では、ディレクトリに実行権限 (x ) が必要です。ディレクトリ ツリーにはこれらの権限が必要であることに注意してください。
ディレクトリが /usr/local/site/test の場合、/usr、/usr/local、/usr/local/site、/usr/local/site/test の 4 つのレベルがすべてのディレクトリであることを確認します。 755の権限を持っています。
#chmod 755 /usr/local/site #chmod 755 /usr/local/site/test
私が犯した間違いの 1 つは、最終レベルのディレクトリのアクセス許可のみを設定し、上位レベルのディレクトリのアクセス許可を設定しなかったことで、結果は 403 になりました。
4. 仮想ディレクトリ
[このように書いたことがないので、この問題に遭遇したことはありません。オンライン情報には次のように書かれており、参考になります]
仮想ディレクトリに設定されている場合は、httpd.conf で仮想ディレクトリを定義する必要があります。これは次のフラグメントのようになります。
Alias /folder "/usr/local/folder" <Directory "/usr/local/folder"> Options FollowSymLinks AllowOverride None Order deny,allow Deny from all Allow from 127.0.0.1 192.168.1.1 </Directory>
この場合、次のように記述します。上記のコードと同様に、3 つのどのフォルダーも同じです。間違いなく 403 になります。解決方法は、Aliasの後ろのスラッシュ以降の文字列を、仮想ディレクトリのフォルダ名と異なる名前に変更すれば、変更した仮想ディレクトリを使用してアクセスできるようになります。フォルダーでも問題ありませんが、トラブルを恐れず、Alias の後ろにある仮想ディレクトリ定義文字 (赤色) と実際のフォルダー名 (黒色) が異なっていれば問題ありません。
5. Selinux の問題
それでも 403 のままの場合は、selinux が問題を引き起こしているため、ディレクトリに selinux 権限を設定できます。
今日この問題に遭遇しました。
#chcon -R -t httpd_sys_content_t /usr/local/site #chcon -R -t httpd_sys_content_t /usr/local/site/test
オンライン情報によると、この手順のほとんどは実行されません。しかし、私の問題は、それがシステムに関連している可能性があり、具体的な原理がよくわからないということです。
6. wsgi に関する問題
仮想ホスト構成は次のとおりです:
<VirtualHost *:80> WSGIScriptAlias / /srv/lxyproject/wsgi/django.wsgi Alias /static/ /srv/lxyproject/collectedstatic/ ServerName 10.1.101.31 #ServerName example.com #ServerAlias www.example.com <Directory /srv/lxyproject/collectedstatic> Options Indexes FollowSymLinks AllowOverride None Require all granted </Directory> <Directory /srv/lxyproject/wsgi/> Allow from all </Directory> ErrorLog /etc/httpd/logs/lxyproject.error.log LogLevel warn </VirtualHost>
ログ エラーにアクセスします:
client denied by server configuration: /srv/lxyproject/wsgi/django.wsgi
解決策方法:
この問題はバージョンが原因です。
私の httpd バージョンは:
[root@yl-web conf.d]# rpm -qa |grep httpd httpd-devel-2.4.6-31.el7.centos.x86_64 httpd-tools-2.4.6-31.el7.centos.x86_64 httpd-2.4.6-31.el7.centos.x86_64
2.3 より前のバージョンの場合は「すべてから許可」を使用し、バージョン 2.3 以降の場合は「すべてから許可」を使用します。すべて許可する必要があります。
rree以上がApache 403 の禁止を解決する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。