メインコンテンツへ移動

プロキシ設定方法

HAPシステムのサービスポートを外部ネットワークに直接公開しないために、HAPシステムを導入後、Nginxプロキシの設定を強く推奨します。この作業により、システムのセキュリティが大幅に強化され、証明書の利用が必要な場合にも対応可能となります。証明書設定については、関連ドキュメントをご参照ください。また、Nginxプロキシは、負荷分散およびリバースプロキシとしても機能し、システムの可用性と安定性が向上します。

1. Nginxインストールパッケージのダウンロード​

wget https://pdpublic.mingdao.com/private-deployment/offline/common/nginx-1.30.4-glibc2.17-amd64.tar.gz

2. Nginxのインストールディレクトリへの展開​

tar -zxvf nginx-1.30.4-glibc2.17-amd64.tar.gz -C /usr/local/

3. Nginx用のシステムユーザーおよびディレクトリ作成​

useradd -r -s /usr/sbin/nologin nginx
mkdir -p /usr/local/nginx/conf/conf.d /data/logs/weblogs/
chown -R nginx:nginx /data/logs/weblogs

4. Nginxメイン設定ファイルの作成​

cat > /usr/local/nginx/conf/nginx.conf <<\EOF
user nginx;
worker_processes auto;
worker_cpu_affinity auto;
worker_rlimit_nofile 204800;
pid nginx.pid;
events {
use epoll;
worker_connections 20480;
}
http {
include mime.types;
default_type application/octet-stream;
server_tokens off;
log_format main "$http_x_forwarded_for | $time_local | $request | $status | $body_bytes_sent | "
"$request_body | $content_length | $http_referer | $http_user_agent | "
"$http_cookie | $remote_addr | $hostname | $upstream_addr | $upstream_response_time | $request_time";
server_names_hash_bucket_size 128;
client_header_buffer_size 8k;
client_max_body_size 10M;
large_client_header_buffers 4 32k;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
proxy_buffer_size 64k;
proxy_buffers 4 128k;
keepalive_timeout 10;
open_file_cache max=102400 inactive=60s;
open_file_cache_valid 30s;
open_file_cache_min_uses 1;
resolver_timeout 10s;
underscores_in_headers on;
gzip on;
gzip_proxied any;
gzip_disable "msie6";
gzip_vary on;
gzip_min_length 1024;
gzip_comp_level 8;
gzip_buffers 16 8k;
gzip_types text/plain text/css application/json application/x-javascript application/javascript text/xml application/xml application/xml+rss text/javascript image/jpeg image/gif image/png;
proxy_http_version 1.1;
include conf.d/*.conf;
}
EOF

5. 業務用プロキシルールの設定​

/usr/local/nginx/conf/conf.d/ にプロキシ設定ファイル(例:hap.conf)を作成します。

vi /usr/local/nginx/conf/conf.d/hap.conf

利用するHTTPまたはHTTPSの設定例を参照してください。

6. Nginx設定ファイルのフォーマットチェック​

/usr/local/nginx/sbin/nginx -t

7. Nginxのsystemdサービスファイル作成​

cat > /etc/systemd/system/nginx.service <<'EOF'
[Unit]
Description=NGINX HTTP and reverse proxy server
After=network.target
Wants=network-online.target
[Service]
Type=forking
PIDFile=/usr/local/nginx/nginx.pid
ExecStartPre=/usr/local/nginx/sbin/nginx -t -q
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s quit
Restart=on-failure
LimitNOFILE=65535
[Install]
WantedBy=multi-user.target
EOF

8. Nginxの起動と自動起動の有効化​

systemctl daemon-reload
systemctl enable nginx
systemctl start nginx

Nginxログの定期ローテーション設定​

リクエストログの蓄積によるディスク使用量の増大を防ぐため、ログの自動ローテーションと削除を設定することを推奨します。

1. 設定ファイルおよび古いログ格納ディレクトリの作成​

mkdir -p /usr/local/logrotate-config
mkdir -p /data/logs/weblogs/oldlogs
chown -R nginx:nginx /data/logs/weblogs

2. 設定ファイルの作成​

cat > /usr/local/logrotate-config/nginx <<\EOF
/data/logs/weblogs/*.log {
create 0640 nginx nginx
daily
dateext
dateformat -%Y-%m-%d
dateyesterday
rotate 180
missingok
ifempty
compress
delaycompress
olddir /data/logs/weblogs/oldlogs
sharedscripts
postrotate
/bin/kill -USR1 `cat /usr/local/nginx/nginx.pid 2>/dev/null` 2>/dev/null || true
endscript
}
EOF

3. 設定ファイルのチェック​

logrotate -d -f /usr/local/logrotate-config/nginx
  • 必ずデバッグ出力を確認してください。エラーが出た場合は、別途対応が必要です。

4. cronへの登録​

( crontab -l 2>/dev/null; echo '0 0 * * * /usr/sbin/logrotate -f /usr/local/logrotate-config/nginx >/dev/null 2>&1' ) | crontab -