我正试着将我的遗留文件迁移到k8s,现在我有了nginx和php-fpm (带代码)图像,我想让nginx只服务于http流量并将其传递给fpm,但nginx坚持要有文件,我没有try_files
指令,但它无论如何都会尝试找到根文件和索引文件。
所以有没有可能不将源代码挂载到nginx上,我真的不明白为什么它应该在那里,但我找不到任何可用的示例
nginx.conf:
server {
listen 80;
index index.php;
# This dir exist only in php-fpm container
root /var/www/html/public;
location ~* \.php$ {
client_max_body_size 0;
include fastcgi_params;
fastcgi_pass php-fpm:9000;
fastcgi_split_path_info ^(.+\.php)(/.*)$;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
fastcgi_param DOCUMENT_ROOT $realpath_root;
}
}
2018/08/17 16:44:40错误9#9:*46“/var/www.html/public/index.php”未找到(2:没有该文件或目录),客户端: 192.xxx.xxx.xxx,服务器:,请求:"GET / HTTP/1.1",主机:“本地主机”
192.xxx.xxx.xxx -- 17/Aug/2018:16:44:40 +0000 "GET / HTTP/1.1“404571 "-”"Mozilla/5.0 (X11;Linux x86_64) AppleWebKit/537.36 (KHTML,如壁虎) Chrome/65.0.3325.146 Safari/537.36“"195.xxx.xxx.xxx"
发布于 2018-08-18 03:20:29
问题是index
指令需要文件index.php
存在,以便在内部将URI /
重定向到/index.php
。
您可以通过添加location /
在内部将所有内容重定向到/index.php
,从而避免使用index
指令。
例如:
location / {
rewrite ^ /index.php last;
}
location ~* \.php$ {
root /var/www/html/public;
client_max_body_size 0;
include fastcgi_params;
fastcgi_pass php-fpm:9000;
fastcgi_split_path_info ^(.+\.php)(/.*)$;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param DOCUMENT_ROOT $document_root;
}
https://stackoverflow.com/questions/51900221
复制相似问题