使用docker搭建nginx + php-fpm的配置问题

来源:3-30 Fastcgi代理配置演示及测试

慕村1342571

2019-01-13

问题一:
使用docker安装nginx和php-fpm,并在nginx映射出来的conf.d中编写配置文件main.conf,在该文件中编写php-fpm的配置,可以实现访问https://192.168.26.152/servs/info.php,其中192.168.26.152为虚拟机地址(如图),考虑单个服务用一个单配置文件的方式,将下面配置编写在新的配置文件php.conf并注释main.conf中的配置,则无法实现上述功能,不明白原因,希望老师解答。
location ~ .php$ {
root /var/www/html/;
fastcgi_pass php:9000; #php 为容器名
#fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME documentrootdocument_rootdocumentrootfastcgi_script_name;
include fastcgi_params;
}

location = /servs/ { # 用于服务名称区分
root /var/www/html; # php容器内的文件路径,将其映射到容器外
fastcgi_pass php:9000;
#fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /var/www/html/servs/$fastcgi_script_name;
include fastcgi_params;
}

图片描述

问题二:
按上述配置,必须完整填写https://192.168.26.152/servs/index.php 才能正常访问,如果直接访问https://192.168.26.152/servs/ 这显示File not found. 如何优化可以自动寻找到https://192.168.26.152/servs/index.php
图片描述

写回答

1回答

Jeson

2019-01-13

问题1、我没太理解到问题,mian.conf是配置的什么内容?

问题2、直接访问https://192.168.26.152/servs/ 这显示File not found.

在你的配置基础上,加入一个默认首页的配置index index.php;,如下:

index index.php;

location ~ .php$ {
root /var/www/html/;
fastcgi_pass php:9000; #php 为容器名
#fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME documentrootdocument_rootdocumentrootfastcgi_script_name;
include fastcgi_params;
}

location = /servs/ { # 用于服务名称区分
root /var/www/html; # php容器内的文件路径,将其映射到容器外
fastcgi_pass php:9000;
#fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /var/www/html/servs/$fastcgi_script_name;
include fastcgi_params;
}


最后,你这两段配置:location ~ .php$ 这里匹配了php结尾的url,location = /servs/这里匹配了/servs的url.

https://192.168.26.152/servs/index.php,如果你这样请求相当于路径都匹配上了,location ~.php$的这段配置是没有必要的。

0
0

Nginx入门到实践-Nginx中间件应用+搭建Webserver架构

中间件、负载均衡、应用层安全防护、动静分离、Nginx+LUA开发等

4183 学习 · 908 问题

查看课程