タグ別アーカイブ: Apache

Apache で Forbidden .htaccessにアクセスできない?

CentOS 5 ではTLS1.2の構築が難しいというので、CentOS 7 の環境でWebサーバを構築しなおしました。

ブラウザでアクセスしてみたら早速

Forbidden
You don’t have permission to access /xxxx on this server.

というエラーが表示される。

/var/log/httpd のエラーログを確認してみると

(13)Permission denied: [client xxx.xxx.xxx.xxx:xxxxx] AH00529: /xxx/.htaccess pcfg_openfile: unable to check htaccess file, ensure it is readable and that ‘/xxx/’ is executable

とのこと。

.htaccess のアクセス権限をチェックするも、読み取り権限有り
/xxx の権限をチェックするも、読み取り権限(実行権限も)有り

 

うーむ。。
試行錯誤の結果、SELINUXが悪さをしているのを発見しました。
setenforce 0
コマンドでSELINUXを一時的にOFFにするとアクセスできました。

vi /etc/selinux/config で
SELINUX=disabled
に編集すると次回のマシン再起動時もOFFのままです。
(このファイルを編集しないと次回起動時にSELINUXが有効になってしまい、同じ現象が発生する)

ほんとはOFFにしなくてSELINUXの設定でなんとかできるんだろうけど。。。

 

414 Request-URI too large が出るようになった

iOS アプリからパラメタ付き GET で WEB サーバにリクエストを投げていたら以下のエラーが出るようになった。

414 Request-URI too large

 

どうやらパラメタが長すぎて URI の長さ制限にひっかかってしまったようです。

デフォルトの長さ制限は 8190 バイトのようですので、これ以上長いと414 エラーとなってしまうようです。

まぁ、そんなに長いパラメタを GET で送るなよ、ということだとは思いますが、アプリを修正するのは時間がかかるので、とりあえず長さ制限の値を変更すれば、アプリを修正するまでの期間はしのげます。

制限の修正は Apache の conf ファイルに以下の行を追加(すでにLimitRequestLine の行がある場合は修正)することで行います。

LimitRequestLine 65536

行を追加したら Apache を再起動して完了です。

上記の例の場合は、65536 バイトに設定していますが、大きすぎないように必要なバイト数だけ指定するのが良いと思います。

そしてそもそもですが、リクエストを GET ではなく POST で送るように修正して、この値はデフォルトに戻せるようにしたほうが、「本来の姿」であると思いますので、まずはリクエストを POST にできないか検討してみたほうが良いと思います。