nginx + php-fpm 配置 #
nginx 相关 #
方案一:
text
server {
root /var/www/html;
index index.php;
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
- 访问路径,如:
/index.php
,/login.php
方案二:
text
server {
root /var/www/html;
rewrite ^/$ /home redirect;
location / {
if (!-e $request_filename) {
rewrite ^(.*)$ /index.php/$1 last;
}
}
location ~ ^(.+\.php)(.*)$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_split_path_info ^(.+\.php)(.*)$;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
- 访问路径,如:
/login
,/index.php/login
fastcgi_param SCRIPT_FILENAME
may be:
$document_root$fastcgi_script_name;
# Default root of php scripts/php-scripts$fastcgi_script_name;
# Change root of php scripts
Include defaults may be:
include fastcgi_params;
# Centosinclude snippets/fastcgi-php.conf;
# Ubuntu
fastcgi_param 配置参考:
nginx
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param QUERY_STRING $query_string;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
fastcgi_param REQUEST_URI $request_uri;
fastcgi_param DOCUMENT_URI $document_uri;
fastcgi_param DOCUMENT_ROOT $document_root;
fastcgi_param SERVER_PROTOCOL $server_protocol;
fastcgi_param REQUEST_SCHEME $scheme;
fastcgi_param HTTPS $https if_not_empty;
fastcgi_param GATEWAY_INTERFACE CGI/1.1;
fastcgi_param SERVER_SOFTWARE nginx/$nginx_version;
fastcgi_param REMOTE_ADDR $remote_addr;
fastcgi_param REMOTE_PORT $remote_port;
fastcgi_param SERVER_ADDR $server_addr;
fastcgi_param SERVER_PORT $server_port;
fastcgi_param SERVER_NAME $server_name;
php-fpm 相关 #
www.conf #
text
;user = www-data
;group = www-data
user = root
group = root
File path may be:
/etc/php-fpm.d/www.conf
# Centos/etc/php/7.2/fpm/pool.d/www.conf
# Ubuntu/usr/local/etc/php-fpm.d/www.conf
# Docker php:7-fpm
Original user and group may be:
apache
# Centoswww-data
# Ubuntu
command options #
-D
,--daemonize
-F
,--nodaemonize
-R
,--allow-to-run-as-root
配置示例 #
目录结构 #
/root/docker-sample/
Dockerfile
docker-compose.yml
- php-fpm-www.conf: 用于覆盖默认的 php-fpm.d/www.conf 配置。
work/
: php脚本所在目录
Dockerfile #
dockerfile
FROM php:7-fpm
EXPOSE 9000
RUN docker-php-ext-install pdo pdo_mysql
ADD ./php-fpm-www.conf /usr/local/etc/php-fpm.d/www.conf
docker-compose.yml #
yaml
version: "3.4"
services:
taohua:
build: .
image: "my-php:7-fpm"
command: ["php-fpm", "--nodaemonize", "--allow-to-run-as-root"]
environment:
- "TZ=Asia/Shanghai"
ports:
- "127.0.0.1:9000:9000"
volumes:
- "/root/docker-sample/work:/work"
nginx conf #
text
server {
root /root/docker-sample/work;
rewrite ^/$ /home redirect;
location / {
if (!-e $request_filename) {
rewrite ^(.*)$ /index.php/$1 last;
}
}
location ~ ^(.+\.php)(.*)$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_split_path_info ^(.+\.php)(.*)$;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param SCRIPT_FILENAME /work/$fastcgi_script_name;
include fastcgi_params;
}
location ~ /\.ht {
deny all;
}
}