nginxでのSSL通信

前回、apacheでSSLの設定をして、httpsによる通信を行うことができた。wordpressの高速化の際、apacheではなくnginxに切り替えた際にhttpsの通信ができなくなってしまった。今回はその解決方法について書く。 まず最初に以下のコマンドでssl.confを移動させておく。

sudo mv /etc/httpd/conf.d/ssl.conf /etc/nginx/conf.d/

nginxの設定のため以下のファイルを編集する。

sudo vim /etc/nginx/nginx.conf

設定のファイルのため、管理者権限で行う。

httpとhttpsではポートが違い、httpが80でhttpsが443である。そのため新しくserver{}の項目を増やす必要がある。 以下を追記する。

server {
        listen 443;
        ssl on;
        ssl_certificate      "チェインファイルのパス";
        ssl_certificate_key  "キーファイルのパス";
}

しかしこのままではWordPressの画面は表示されず、nginxの画面が表示される。 そのためこのserver{}の中にもhttpの方とおなじ設定を記載する必要がある。

#sample
server { 
    listen 443; 
    ssl on; 
    ssl_certificate "チェインファイルのパス"; 
    ssl_certificate_key "キーファイルのパス"; 
    server_name "domain"; 
    root /var/www/html; 
    index index.php index.html index.htm; 
    location / { 
    } 
    error_page 500 502 503 504 /50x.html; 
    location = /50x.html { 
        root html; 
    } 
    location ~ \.php$ { 
        fastcgi_pass 127.0.0.1:9000; 
        fastcgi_index index.php; 
        fastcgi_param SCRIPT_FILENAME /var/www/html$fastcgi_script_name; 
        include fastcgi_params; 
    } 
}

以上でhttpsとhttpsで同じ画面をみることができるようになった。