検索条件
お知らせ
現在サイトのリニューアル作業中のため、全体的にページの表示が乱れています。
Env |
Ver |
OS |
Ubuntu 20.04.4 LTS |
PHP |
8.0.29 |
nginx |
1.18.0 |
sudo apt install php8.0-fpm
sudo sed -i -e 's/;listen.mode = 0660/listen.mode = 0666/' /etc/php/8.0/fpm/pool.d/www.conf
sudo service php8.0-fpm start
設定ファイルを開きPHPを動かす設定を書く
location ~ ^/.*$ {
root /path/to/www;
fastcgi_pass unix:/run/php/php8.0-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
Web開発をしていると取り敢えずHTTPリクエストが取れる雑なモックサーバーが欲しくなることがあるので、その作り方。
Env |
Ver |
OS |
Windows 11 Pro |
WSL2 |
- |
Distoribution |
Ubuntu 20.04.4 LTS |
PHP |
8.0.29 |
nginx |
1.18.0 |
- Windows側の
hosts
に 127.0.0.1 mock-server.test
を追加
/etc/nginx/conf.d
に以下の設定ファイルを置く
server {
listen 80;
client_max_body_size 100m;
server_name mock-server.test;
access_log /var/log/nginx/mock-server.access.log;
error_log /var/log/nginx/mock-server.error.log;
location ~ ^/.*$ {
rewrite ^/.*$ / break;
# リクエストパスの確認用
proxy_set_header X-Request-Path $request_uri;
proxy_pass http://127.0.0.1:8888;
}
}
sudo service nginx restart
- モックサーバーのコードを書いて適当な場所に置く
<?php
$server_json = json_encode($_SERVER);
file_put_contents('log', "$server_json\n", FILE_APPEND);
php -S localhost:8888
http://localhost:8888/hoge
にアクセスしログファイルに追記されることを確認
- おわり
$_SERVER
の中身をフィルタしたい時
<?php
$ignoreKeys = [
'DOCUMENT_ROOT',
'REMOTE_ADDR',
'REMOTE_PORT',
'SERVER_SOFTWARE',
'SERVER_PROTOCOL',
'SERVER_NAME',
'SERVER_PORT',
'REQUEST_URI',
'SCRIPT_NAME',
'SCRIPT_FILENAME',
'PHP_SELF',
'HTTP_HOST',
'HTTP_CONNECTION',
'HTTP_UPGRADE_INSECURE_REQUESTS',
'HTTP_USER_AGENT',
'HTTP_ACCEPT',
'HTTP_ACCEPT_ENCODING',
'HTTP_ACCEPT_LANGUAGE',
'HTTP_CACHE_CONTROL',
'REQUEST_TIME_FLOAT',
'REQUEST_TIME'
];
$buff = array_filter($_SERVER, function($key) use($ignoreKeys) {
return !in_array($key, $ignoreKeys);
}, ARRAY_FILTER_USE_KEY);
$server_json = json_encode($buff);
file_put_contents('log', "$server_json\n", FILE_APPEND);
ローカル環境用の開発ドメインをhttps化する時に使えるやつ
例えばローカル環境に複数のサービスがいて、それぞれをhttps://*.example.com/
のようなドメインで管理したい時に使える
同じことをすればLinuxとかでも応用できると思う
Env |
Ver |
nginx |
1.19.8 |
mkcert |
1.4.3 |
Windows 10 Pro |
19043.1415 |
- mkcert の導入とワイルドカード証明書の作成
choco install mkcert
# mkcertを認証局として登録
mkcert -install
# 証明書を作成するドメインを列挙
mkcert example.test *.example.test
mv _wildcard.example.com+1.* C:/nginx/conf/.ssl/
nginxの設定に証明書を記載
server {
server_name dev.example.com;
listen 443 ssl;
ssl_certificate ssl/_wildcard.example.com+1.pem;
ssl_certificate_key ssl/_wildcard.example.com+1-key.pem;
...
}
Next.js 11から12にしたらHMRが死んだので復活させるための設定を書いておく
Env |
Ver |
nginx |
Windows-1.21.4 |
Next.js |
12.0.4 |
標準状態でnpx next
を叩いた状態を想定している
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
server {
listen 80;
location / {
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_pass http://localhost:3000;
}
}
~
で正規表現を書けるので後は普通に書くだけ
- ポイントとしては
/foo/
のような正規表現リテラルではなく、grepのような書き方をする
location ~ (/foo|/bar) {