NGINXを使ってSSL通信でLaravelにアクセスする方法
Windows10で開発時にLaravelをSSL通信(https)したい場合、NGINXを使うと簡単です。
バージョン
- Laravel - 8.x
- NGINX - 1.20.1
NGINXのインストールと起動確認
- https://nginx.org/en/download.htmlからインストールファイル(zip)をダウンロードする
(今回はStable versionのWindowsをダウンロード) - ダウンロードしたファイルを任意の場所に解凍する
例)C:\nginx-1.20.1
- フォルダ内の
nginx.exe
をダブルクリック、またはコマンドプロンプトからnginx.exe
を実行する - ブラウザで
http://localhost/
にアクセスする
終了はコマンドプロンプトから次のコマンドを実行します。
nginx.exe -s stop
コマンドプロンプトから
nginx.exe
を実行している場合は、別のコマンドプロンプトを起動して上記コマンドを実行します。参考
httpでLaravelにアクセスする
設定ファイルの変更
<nginxインストールフォルダ>\conf\nginx.conf
を編集します。
http > serverの内容を次のように変更します。
http {
:
server {
listen 80; # 任意のポート
server_name local-server; # 自身のマシン名やIPアドレス
root C:/laravel/sample-project/public; # Laravelのプロジェクトフォルダ/public
location / {
index index.html index.htm index.php;
try_files $uri $uri/ /index.php?$query_string;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
location ~ \.php$ {
try_files $uri /index.php = 404;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
}
実行
- phpのインストールフォルダで次のコマンドを実行する
php-cgi.exe -b 127.0.0.1:9000
nginx.exe
を実行する- ブラウザで
http://<server_name>:<listen>
にアクセスする
上記の場合だと、http://local-server:80
(必要に応じて、Laravelで定義したルーティングを指定する)
httpsでLaravelにアクセスする
<nginxインストールフォルダ>\conf\nginx.conf
を編集します。
# HTTPS server
の箇所を有効にし、次のように変更します。
http {
:
# HTTPS server
#
server {
listen 443 ssl;
server_name local-server; # 自身のマシン名やIPアドレス
ssl_certificate server-crt.pem; # 自分で用意したファイル
ssl_certificate_key server-key.pem; # 自分で用意したファイル
#ssl_session_cache shared:SSL:1m;
#ssl_session_timeout 5m;
#ssl_ciphers HIGH:!aNULL:!MD5;
#ssl_prefer_server_ciphers on;
root C:/laravel/sample-project/public; # Laravelのプロジェクトフォルダ/public
location / {
index index.html index.htm index.php;
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
try_files $uri /index.php = 404;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
}
実行
- phpのインストールフォルダで次のコマンドを実行する
php-cgi.exe -b 127.0.0.1:9000
nginx.exe
を実行する- ブラウザで
https://<server_name>:443
にアクセスする
上記の場合だと、https://local-server:443
(必要に応じて、Laravelで定義したルーティングを指定する)