httpdをnginxに取り換えてみた。panda大学習帳panda大学習帳ハヤシライスのハヤシじゃない方。httpdをnginxに取り換えてみた。httpdを使用しています。httpdはこれまで仕事でも長らくお世話になっております。httpdをnginxに取り換えてみて、nginx自体の設定やファイル及びディレクトリのユーザ権限などで注意が必要と思われる点を$n$個くらいまとめてみることにしました。httpd及びWordpressは設定等により稼働状況を大きく変化させることができますが、この記事は以下の設定等が行われているものとして書いていきます。httpdだけではなくphp-fpmも稼働させています。よってphp-fpmの設定のうち、プロセスや稼働させるプロセス数の設定の最適化のための設定についてはこの記事では扱いません。パーマリンクはデフォルトのもの(“https://pandanote.info/?p=5821′′のようなフォーマットです。31)を使用しています。nginxの設定で注意が必要だったところこの節ではnginxの設定で注意が必要だったところを列挙していきます。HTTPプロトコルを扱うポートへのアクセスをHTTPSプロトコルを扱うポートへ転送するnginx.confのhttpのセクションの下のserverセクションのHTTPプロトコルを扱うポート(以下、「80番ポート」と書きます。)についての定義中の適当な場所(最初のlocationの定義の前あたり)に以下の設定を追加します。rewriteを行うことなく、サクッと転送です。😎HTTPSプロトコルを扱うポートについての設定の追加nginx.confの80番ポートについての定義(前節参照)の直後に以下の設定を追加します。TLSはv1.3及びv1.2のみのサポートとしています。古いバージョンのブラウザをサポート対象とするとセキュリティ上の問題があることの他に、古い仕様のHTMLの記述についてのサポートも必要になりますので、それを不要とすることで、サーバ管理上の負担を削減することも目的です。client_max_body_sizeの値を調整することで、アップロードできるファイルの大きさを大きく設定しています。WordPressの管理ページへのアクセスをIPアドレスで制限するための設定の別解みんな大好きIPアドレスを使ったアクセスコントロールですが、他の条件と組み合わせる(e.g.特定の機種の端末で、かつ特定のIPアドレスからのアクセスのみ許可する場合。all;...のような許可リストを並べる方法が使えません。́・ω・`)そこで、mapモジュールを使います。31ではデフォルトで有効になっています。🙏ということで、httpセクションの下に以下の設定を追加します。以下の例の変数allowed及びそれに格納するパラメータの定義の方法については特別なルールはありませんので、他の予約されている変数等と重複しない限り自由に定義できます。httpセクションの直下に以下の設定を追加します。この例では、アクセス元のIPアドレスがab.cd.ef.ghiと一致するか、先頭が2abc:defg:hijk:lmop:と一致する場合に限り変数allowedにallowをセットし、それ以外の場合にはdenyをセットします。IPアドレスリストは文字列として扱われますのでサブネットマスクは使えません。allow;等のように設定する必要があります。defaultについても忘れずに設定します。😁serverセクションのうちの必要な場所でallowed変数を参照し、denyである場合には404を返すための設定を追加します。具体的には以下のような設定になります。特定の属性値を持つリクエストを許可するための設定例スポンサーリンク例えば、前節の手順2の評価を行う前に以下のようにallowed変数を上書きすることで、特定のhttp_user_agentを送信する端末からのアクセスを無条件に許可する設定とすることができます。httpd側で以下の設定を行うと、404.phpで記述されたエラーページが表示される仕組みになっていました。/index.php?error=404nginxには上記のような仕組みがありませんので、設定で何とかする必要があります。具体的には404エラーが発生した際にはFastCGIにリクエストをforwardする設定を行います。その際に、FastCGIに適切なURLが渡るように設定する必要があります。そこで、以下のように設定してみました。FastCGIに対しては環境変数を設定できますが、呼び出すファイル名(ここではindex.php)とクエリ文字列(error=404)を別々の環境変数にセットするように設定してみました。31ではphp-fpmの設定ファイルは/etc/php-fpm.dの下にありますが、/etc/php-fpm.d/www.confの設定のうち以下の設定を変更します。httpd,php-fpmまたはwordpress.confが使用しているディレクトリ等のうちnginxが使用するものについてはownerをnginxに変更する必要があります。31では以下のディレクトリ等のownerをnginxに変更します。/etc/wordpress及びその直下のファイル/var/lib/php/session及びその直下のファイルなお、SOAPは使っていないので/var/lib/php/wsdlcacheのownerは変更していませんが、使用している場合にはownerをnginxに変更する必要があるかもしれません(未確認)。encrypt用のプラグインのインストール以下のコマンドを実行し、certbox-nginxパッケージをインストールします。httpdを稼働させた状態でアクセスしたときには一呼吸おいてからページが表示されていたように感じていたのですが、nginxに切り替えた後はその一呼吸がなくなったように感じました。切り替えのための設定にミスがあると他のWebサイト様でも指摘のある通り404エラーを連発してしまうため、その解決ためにはそれなりの手間を要しますが、切り替えてみる価値はありそうです。httpdで運用している期間が長くなってくると、設定ファイルが「秘伝のタレ」化しがちですが、たまにはリファクタリングしてみるのも悪くはないなぁと思いました。27でWebDAV経由でPUTコマンドが実行できなかったときの対処法のメモ書き。Solr側の新元号対応が原因でハマった件。NEologdを組み込んだSolr7対応のkuromojiを作ってみた。30を31にアップグレードしてみた。PCからの音声をBOSEのスピーカーに飛ばしたら臨場感が増した件。このウィジェットの背景が黒くなってしまうことがある理由についてはこちらをクリック。AviUtlgimp-2.10.sikuliGIMP-2.10を使ってスクリーンショットを取得するためのSikuliXのスクリプト。SikuliX-2.0.1+GIMP-2.10.10の組み合わせでのみ動作確認を行っています。SolrのDataImportHandlerで7-zipで圧縮されたファイルのインポートをサポートするためのJARファイル。struts2ajaxtestStruts2でAjaxを使用するWebアプリケーションのサンプル。LANを発行するためのスクリプトのサンプル(Fedora用)。8用のNEologd入りkuromojiをビルドするためのパッチ。GROWIの設定とHTTPS経由で接続するための各種の設定。GROWI等のインストール。PCからの音声をBOSEのスピーカーに飛ばしたら臨場感が増した件。httpdをnginxに取り換えてみた。YouTube↓のボタンを押していただくとチャンネルを登録できます。見解等とは一切関係ありません。