0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

NginxでWordPressなどをSSLに対応した

Last updated at Posted at 2022-06-24
../

CentOS Stream 8にPHP7.4を入れ、Nginxで動作させた。そしてWordPress6.0も入れ、試してみている。80ポートで動作することは確認済みである。これらをSSLに対応し、443ポートでアクセスできるようにしてみた。

SSLの鍵は「CentOS8.2でSSL証明書(Let's Encrypt)をセットアップする手順」で取得したものが使える。作業は、nginx.confなどを適切に記述して、再起動するだけである。

$ ls -lag /etc/nginx
drwxr-xr-x 2 root root 4096 2022-06-23 16:30 conf.d
-rw-r--r-- 1 root root 1077 2021-12-22 04:43 fastcgi.conf
-rw-r--r-- 1 root root 1007 2021-12-22 04:43 fastcgi_params
-rw-r--r-- 1 root root  910 2022-06-24 10:21 nginx-443.conf       // 新規
-rw-r--r-- 1 root root  476 2022-06-24 10:20 nginx-80.conf        // 新規
-rw-r--r-- 1 root root  530 2022-06-24 10:24 nginx-location.conf  // 新規
-rw-r--r-- 1 root root 1225 2022-06-24 10:13 nginx.conf           // 編集

nginx.confは、以下のように書いた。変更した部分のみを示しておく。

$ vi /etc/nginx/nginx.conf

$ user nginx;
user www;
...
http {
	...
    include /etc/nginx/nginx-80.conf;
    include /etc/nginx/nginx-443.conf;
}

nginx-80.confは、以下の感じ。

  • 443をdefault_serverにしたいので、80からは外しておく
  • locationディレクティブは、共通化のためnginx-location.confにまとめておく
$ vi /etc/nginx/nginx-80.conf

    server {

#       listen       80 default_server;
        listen       80;
#       listen       [::]:80 default_server;
        listen       [::]:80;
#       server_name  _;
        server_name  kankeri.com www.kankeri.com;
#       root         /usr/share/nginx/html;
        root         /opt/php74/webapps;

        include /etc/nginx/default.d/*.conf;
        include /etc/nginx/nginx-location.conf;
    }

nginx-443.confは、以下の感じ。

$ vi /etc/nginx/nginx-443.conf

    server {
        
        listen       443 ssl http2 default_server;
        listen       [::]:443 ssl http2 default_server;
#       server_name  _;
        server_name  kankeri.com www.kankeri.com;
#       root         /usr/share/nginx/html;
        root         /opt/php74/webapps;

#       ssl_certificate "/etc/pki/nginx/server.crt";
        ssl_certificate "/etc/letsencrypt/live/kankeri.com/fullchain.pem";
#       ssl_certificate_key "/etc/pki/nginx/private/server.key";
        ssl_certificate_key "/etc/letsencrypt/live/kankeri.com/privkey.pem";
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_session_cache shared:SSL:1m;
        ssl_session_timeout  10m;
        ssl_ciphers PROFILE=SYSTEM;
        ssl_prefer_server_ciphers on;

        include /etc/nginx/default.d/*.conf;
        include /etc/nginx/nginx-location.conf;
    }

nginx-location.confは、以下の感じ。

  • オリジナルのnginx.confの記述をコピペして改変している
  • .phpのとき、fastcgi(php-fpm)を呼び出す
$ vi /etc/nginx/nginx-location.conf

    index index.php index.html;
    charset utf-8;

    location / {
        try_files $uri $uri/ /index.php?$args;
    }
    location ~ \.php$ {
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_script_name;
        include fastcgi_params;
    }
    location ~ /\. { deny all; }
    location ~* /wp-config.php { deny all; }
    location ~* /(?:uploads|files)/.*\.php$ { deny all; }
    location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
        expires max;
        log_not_found off;
    }
    error_page 404 /404.html;
    location = /40x.html { }
    error_page 500 502 503 504 /50x.html;
    location = /50x.html { }

$ nginx -t

そもそも、php-fpm がよくわかっていなかったので、調べてみた。

  • FPM:FastCGI Process Managerのこと。PHP用に php-fpm がある。
  • FastCGI:プロセス初回実行時に該当プロセスを一定時間サーバー内に保持することで、次回以降、実行時の「プロセスの起動/終了」を省略し、 高速化や、プロセスの起動/終了に伴うCPUへの負荷を軽減する
  • php-fpm:PHP用のFPM。単純なcgiだと、処理ごとにプロセスの生成と破棄を繰り返すため、オーバーヘッドが大きい。php-fpmだと、プロセスの使い回しができ、オーバーヘッドがなくなる。OPCacheも使える。

php-fpm 関連の設定を確認した。今回は特に触らない。既存の設定で十分だった。php-fpmとNginxを再起動する。

$ vi /etc/php-fpm.conf					// 特に触らず
$ vi /etc/php-fpm.d/www.conf			// 特に触らず
$ vi /etc/nginx/conf.d/php-fpm.conf 	// 特に触らず
upstream php-fpm {
   server unix:/run/php-fpm/www.sock;
}
$ ls -lag /run/php-fpm/
-rw-r--r-- 1 root root 7 2022-06-23 16:56 php-fpm.pid
srw-rw---- 1 www  www  0 2022-06-23 16:56 www.sock

$ systemctl restart php-fpm
$ systemctl restart nginx
../
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?