在Windows Docker环境中构建nginx+php-fpm环境

image.png

虽然任务很简单,但由于涉及到各种设置,不知道哪个设置会对哪里产生影响,所以要以最简配置逐个确认并确保逐个执行,同时查看错误信息。

参考:bitnami/php-fpm

    php-fpmイメージ取得
docker pull bitnami/php-fpm:latest
    取得確認(イメージIDをコピーしておくと良い)
docker images

为了使docker容器能够相互通信,在docker内构建网络。
参考: Docker网络概述。

image.png
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
image.png
    nginx.confの確認
/etc/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の変更
以下是/etc/conf.d/default.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
image.png
index.php
index.php

index.php

index.php

image.png

参考:
ngx_http_fastcgi_module模块
【docker】关于nginx的conf文件使用php-fpm
关于FastCGI
nginx中$document_root$fastcgi_script_name和$request_filename的区别

广告
将在 10 秒后关闭
bannerAds