在Windows Docker环境中构建nginx+php-fpm环境
虽然任务很简单,但由于涉及到各种设置,不知道哪个设置会对哪里产生影响,所以要以最简配置逐个确认并确保逐个执行,同时查看错误信息。
参考:bitnami/php-fpm
- php-fpmイメージ取得
docker pull bitnami/php-fpm:latest
- 取得確認(イメージIDをコピーしておくと良い)
docker images
为了使docker容器能够相互通信,在docker内构建网络。
参考: Docker网络概述。
docker network create app-tier --driver bridge
- php-fpmコンテナ起動
docker run -d --network app-tier bitnami/php-fpm --name pfp-fpm
- nginxコンテナ起動(事前にnginxのイメージを取得していること)
docker run -dp 8080:80 --network app-tier nginx --name nginx
- nginx.confの確認
用户名 nginx
工作进程 自动错误日志 /var/log/nginx/error.log 注意
进程识别 /var/run/nginx.pid
事件 {
连接数 1024;
}
HTTP {
包含 /etc/nginx/mime.types;
默认类型 application/octet-stream;
记录格式 main ‘$remote_addr – $remote_user [$time_local] “$request” ‘
‘$status $body_bytes_sent “$http_referer” ‘
‘”$http_user_agent” “$http_x_forwarded_for”‘;
访问日志 /var/log/nginx/access.log main;
发送文件 开启;
#tcp_nopush 关闭;
保持连接超时 65;
#gzip 开启;
包含 /etc/nginx/conf.d/*.conf;
}
在包含的conf.d文件夹下的default.conf中进行设置更改。
- defaul.confの変更
“`
服务器 {
监听 80;
监听 [::]:80;
服务器名称 本地主机;# 访问日志 /var/log/nginx/host.access.log 主要的;
位置 / {
根目录 /usr/share/nginx/html;
索引 index.html index.htm;
}
# 错误页面 404 /404.html;
# 将服务器错误页面重定向到静态页面 /50x.html
#
错误页面 500 502 503 504 /50x.html;
位置 = /50x.html {
根目录 /usr/share/nginx/html;
}
# 将 PHP 脚本代理到监听在 127.0.0.1:80 上的 Apache
#
#位置 ~ \.php$ {
# proxy_pass http://127.0.0.1;
#}
# 将 PHP 脚本传递给监听在 127.0.0.1:9000 上的 FastCGI 服务器
#
位置 ~ \.php$ {
+ 根目录 /app;
+ fastcgi_pass pfp-fpm:9000;
+ fastcgi_index index.php;
+ fastcgi_param 脚本文件名 $document_root$fastcgi_script_name;
– #根目录 html;
– #fastcgi_pass 127.0.0.1:9000;
– #fastcgi_index index.php;
– #fastcgi_param 脚本文件名 /scripts$fastcgi_script_name;
包括 fastcgi_params;
}
# 拒绝访问 .htaccess 文件,如果 Apache 的文档根与 nginx 的文档根相同
#
#位置 ~ /\.ht {
# 拒绝 所有;
#}
}
“`
- 変更箇所の説明
root /app; #php-fpmコンテナ側のドキュメントルート
fastcgi_pass pfp-fpm:9000; #Proxy先のphp-fpmコンテナ側のホストとポート情報
fastcgi_index index.php; #$fastcgi_script_nameに格納するインデックスファイル名
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; #php-fpm側コンテナ側へリクエストするパラメータ
- nginxのconfチェック
nginx -t
- nginxのconfリロード
service nginx reload
index.php
index.php
index.php
参考:
ngx_http_fastcgi_module模块
【docker】关于nginx的conf文件使用php-fpm
关于FastCGI
nginx中$document_root$fastcgi_script_name和$request_filename的区别