Apache - user000422/0 GitHub Wiki

ノウハウ

# httpd.conf

# セキュリティ的にこれは確定でよい
<Directory />
    AllowOverride none # すべて拒否
</Directory>

操作

RHEL6 RHEL8 RHEL9
導入 yum install httpd dnf install httpd dnf install httpd
起動 systemctl start httpd

バーチャルホスト一覧を確認

/usr/sbin/httpd -t -D DUMP_VHOSTS

# バージョン確認
httpd -v

# 色んな情報(VirtualHostの確認に使用した)
httpd -S

# 再起動
service httpd restart
# RHEL

# 状態確認
systemctl status httpd
service httpd status

# 設定反映
systemctl reload httpd

# 起動
systemctl start httpd
service httpd start

# 停止
systemctl stop httpd

# 自動起動
systemctl enable httpd.service

httpd.conf

# エラーログに記録されるレベルを設定
LogLevel notice

<Directory />
  Require all denied  # 全て拒否
  Require all granted # 全て許可

  Deny from all  # 全て拒否
  Allow from all # 全て許可

  AllowOverride All  # .htaccessを全て有効
  AllowOverride None # .htaccessを全て無効
</Directory>

■エイリアス
アクセスされるパスのルーティングを設定。

Alias /json "/var/www/html/json"


.htaccess

HTTP(HTTPS)接続を制御する(SSHなどは制御しない)
修正後サーバの再起動などは必要ない

# 接続許可(指定IP)
Require ip 000.000.000.000
# 特定のファイルへのアクセスを特定のIPからのみ許可(特定ファイルのディレクトリに.htaccessを格納)
<Files "sample.html">
    Require ip 0.0.0.0
</Files>

URLリダイレクト
confファイルで「mod_rewrite.so」を読み込ませる必要がある

RewriteEngine on
RewriteRule from.html to.html
# 特定のIP以外は404にリダイレクト
RewriteEngine on

# このIPのみ404にはリダイレクトしない
RewriteCond %{REMOTE_ADDR} !^111.1111.111.1111$
RewriteRule ^.*$ - [NC,R=404,L]

URL拡張子なしでアクセス

RewriteCond %{REQUEST_FILENAME}\.html -f
RewriteRule ^(.*)$ $1.html [L]

logrotate.d

ログローテーション設定 /etc/logrotate.d


バーチャルホスト

複数のドキュメントルートを使用したくなったため。

# バーチャルホスト設定を確認(どのバーチャルホストがサーバに設定されているか)
httpd -S

Apache設定ファイルに記載でよい
/etc/httpd/conf/httpd.conf

<VirtualHost *:80>
  ServerName laravel.sample.jp
  DocumentRoot /var/www/html/sample-project/public
</VirtualHost>

<VirtualHost *:80>
  ServerName sample.jp
  DocumentRoot /var/www/html
</VirtualHost>

(応用)ベーシック認証

ドキュメントルートに .htaccess.htpasswd を作成する
.htaccess に下記を追記する。

AuthUserFile /var/www/html/.htpasswd # .htpasswdを作成したパス
AuthName “Please enter your ID and password”
AuthType Basic
require valid-user 

.htpasswd に下記を追記する。
パスワードは http://www.htaccesseditor.com/#a_basic で生成したものを記述。

# ユーザー:パスワード
test:pass

(応用)Digest認証

.htaccess に下記を追記する。(要検証 検証したのはxxx.conf)

AuthType Digest
AuthUserFile /etc/httpd/.htdigest # .htdigestを作成する予定のパス
AuthName “sample”
AuthDigestProvider file
require sample-user

記載後、下記コマンド(htdigest -c [パス] [AuthName] [requireユーザ])
htdigest -c /etc/httpd/.digest "sample" sample-user

⚠️ **GitHub.com Fallback** ⚠️