:::: MENU ::::
Posts tagged with: Apache

ApacheのバージョンによりAuthTypeエラー

幾つかのApacheサーバー関連で、セキュリティ強化のため、httpd.conf内の制限を強くしていったところ、下記のエラーでトップのページが表示されなくなってしまった。

configuration error:  couldn’t perform authentication. AuthType not set!: /

原因は、Apache 2.2系の設定に、下記を追加したことによるものでした。

<Directory "/var/www/html">
...
...
Require GET POST
</Directory>

Require記述は、2.4系からなので、Require行を削除したところ、復帰しました。

Requireの書式を記述しても、configtestは通って、Syntax OKになるので注意ですね。

 


SSL(HTTPS)で画像が読み込まれなくハマった

とあるサイトで、サイトをSSL化(HTTPS)したところ、画像だけが読み込まれないトラブル

環境は、CentOS7上のApache 2.4で、ssl.confを主体に、confファイルをいろいろ調べてみても解決せずにハマりました。

原因は、「画像の直リンク禁止」設定にしていたからでした。

画像ディレクトリ(images)内の、.htaccessで下記のように直リンク禁止設定にしていました。

<Files ~ "\.(jpg|gif)$">
SetEnvIf Referer “http://www.xxx.xxx/" OK
SetEnvIf Referer “http://localhost/" OK
Order allow,deny
allow from 127.0.0.1
allow from env=OK
</Files>

はい、もうお分かりですね。

記述されているSetEnvIf RefererのURLがhttpになっているので、httpsだと☓なんですね。

ある意味、正常動作

HTTPSでも画像を表示したいので、http:を削除し、//www.xxx.xxxに修正すればOKです。


WEBページの文字化けはApacheの設定だけではなかった

CentOS7にて、yumでインストールしたApacheで、以前の設定のまま稼働状態になっていたにも関わらず、なぜかUTF-8以外のページが文字化けしていた。

UTF-8以外のページは、charsetの文字コードも記述しているにも関わらず、ブラウザー(Safari,Firefox,Google Chrome)で自動認識されない症状。

Apacheの設定では、このようば文字化けに関する設定は、/etc/httpd/httpd.conf内のAddDefaultCharが関係しているので、

#AddDefaultCharset UTF-8
AddDefaultCharset Off

このどちらかを記述していれば問題ないはず。

さらには、conf.d内のバーチャルホスト等の設定も、これらの記述は書かれていないことを確認。
設定を変更したならば、Apacheを再起動することで有効になるが、これでも文字化けは解決せず。

かなり、時間を費やして、ページや設定を弄りましたが、どうやら、この問題はApacheだけではなかったようです。

それは、PHPの設定

PHPの設定でも、以前から全く変更はしていませんでしたが、/etc/php.ini内のdefault_charsetを空白にする必要があるようです。

;default_charset = "UTF-8"
default_charset = ""

これで、Apacheを再起動したところ、文字化けが解消されました。

文字化けしてたページ内では、ごく普通なHTMLで、PHP構文は使ってないにも関わらず、 PHPが関係していたのです。


3日間悩んだApache2.4系ユーザーディレクトリのForbidden

Apache2.4系を入れる必要があったので、CentOS6/Apache2.2からCentOS7/Apache2.4へ更新しました。

2.4系では、httpd.conf内の書式やアクセス制御の書式も変更になり、修正を施し、Apache起動まで確認できたところで、ユーザーディレクトリの設定を有効にしたところ、Fobiddenのエラーでハマってしまいました。

この時の環境では、

  • Firewall無効
  • SELinux無効
  • mod_userdir.soのモジュールが読み込まれているか確認
  • /etc/httpd/conf.d/userdir.con内を確認
    UserDir public_html
    <Directory “/home/*/public_html”>
    AllowOverride ALL
    Options ALL
    Require all granted
    </Directory>
  • userのパーミッションを711確認
  • user下public_htmlディレクトリのパーミッションを755確認
  • public_html下のindex.htmlに読み込み属性があるか確認
  • user下に.htaccessがあるか確認
    .htaccessが見つかった場合、アクセス制御書式が古くなっているのでorder deny allow形式からRequire形式に変更

おおよそ、これくらいの設定で普通なら閲覧できるはずなんです。

実は、今回運用したサイトの構成で、userのディレクトリは、グループ分けする必要があったので、下記のようになってます。

/home/group1/user1
/home/group1/user2
/home/group2/user3
/home/group2/user4

これらuser1からuser4までチルダ(~)を使ったURL(http://localhost/~user1)でアクセスすると、すべて、下記のエラー

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

httpdのエラーログを見ても、permission denied.と記載されている。

/home/group/userの位置が悪いのか?と思い、/home/user5のユーザーを作成してみると、~/user5でアクセス出来る。

と言うことは、/etc/httpd/conf.d/userdir.conf内のディレクティブ/home/*/public_htmlが怪しい。
*の指定だと、homeとpublic_html間に何が入っても有効なはずじゃないのか?と思い、下記のディレクティブを追加してみた。

<Directory "/home/*/*/public_html">
AllowOverride ALL
Options IncludesNoExec ExecCGI FollowSymLinks
Require method GET POST OPTIONS
</Directory>

これで、Apacheを再起動したところ、チルダ(~)による各ユーザーのホームページが閲覧できるようになった。

結果オーライだが、/home/*/*/public_htmlの書式は、何かスマートじゃないよね?
何かよい書き方もしくは方法があったら、教えてください。


apc.shm_sizeの警告

ApacheにAPCを導入した際に、下記のようなエラーが出てました。

PHP Warning: PHP Startup: apc.shm_size now uses M/G suffixes, please update your ini files in Unknown on line 0

個々の共有メモリセグメントの大きさを設定する、apc.shm_sizeの設定は、既に設定済みのはずなのに・・・
/etc/php.d/apc.iniを確認してみると、

; The size of each shared memory segment in MB.
;apc.shm_size=64
apc.shm_size=128

デフォルトのサンプルでは、MBの数字を書くって事になってますが、どうやら単位をかかないといけないらしい。

apc.shm_size=128M

これで、Apache再起動したら、エラーは出なくなった。
何だかなぁ〜〜