ホームページ  >  記事  >  運用・保守  >  Apache 403 の禁止を解決する方法

Apache 403 の禁止を解決する方法

藏色散人
藏色散人オリジナル
2019-12-16 14:34:174214ブラウズ

Apache 403 の禁止を解決する方法

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 の設定を確認する必要があります。

あなたの 53b4f58655868d634128bc80bc9902ac は 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&#39;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 のままの場合、最初の手順は正しいです。ディレクトリ設定 すべて。そうしないと、当然のことながら、すべてのアクセスが拒否されます (403)。

[すべてから許可] または [すべての処理許可を要求] に設定できます。

7d50add1c973852b0a9343a1c5b78333 のルート ディレクトリにある Deny from all を変更しないでください。

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

解決策方法:

a84c9d6c966af598e4332f18bd310657 の「すべてから許可」を「すべて許可する必要がある」に変更します。

この問題はバージョンが原因です。

私の 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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。