ThinkPHP 的 nginx 配置踩坑

thinkphp 的 nginx 配置踩坑

今天在用一个以 tp 为基础的快速开发框架时遇到一些问题:

nginx 报错截图

f2017d20e32b8c28eb4e4203551ca14.png

为了方便说明进行手动换行

立即学习“PHP免费学习笔记(深入)”;

// 处理时重写或内部重定向循环2019/11/11 11:16:06 [error] 15164#15432: *1 rewrite or internal redirection cycle while processing     "/index.php/index.php/index.php/index.php/index.php/index.php/index.php/index.php/index/user/index.html",     client: 127.0.0.1,     server: xxxxx,     request: "GET /index/user/index.html HTTP/1.1",     host: "xxxxx",     referrer: "xxxxx"

错误配置

参考 larvael 配置

server {    .    .    .    location / {        try_files $uri $uri/ /index.php?$query_string;    }    .    .    .    location ~ .php$ {        fastcgi_pass127.0.0.1:9000;        fastcgi_index index.php;        fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;        include fastcgi_params;    }    .    .    .}

发现所有路径都一样,都是首页效果

琅琅配音 琅琅配音

全能AI配音神器

琅琅配音 208 查看详情 琅琅配音

初步判断 nginx 重写规则有问题

# 路径 / 开头之后都走这个匹配# 如 /index /index/user location / {    # $uri 本地有就返回,或者$uri/ 本地有目录就返回,或者走后面的重写    # 本地是指在网站根目录下,如 当 $uri=index 就是看根目录下面有 index 文件或者 index/ 目录    try_files $uri $uri/ /index.php?$query_string;}

开始报错

解决问题

网上查询后 tp5 的配置应为

    location / {        try_files $uri $uri/ /index.php$uri;    }

改后,发现问题没解决;对比配置发现

  # location ~ .php$ 改成  location ~ .php(.*)$    location ~ .php(.*)$ {        fastcgi_pass   127.0.0.1:9000;        fastcgi_index index.php;        fastcgi_split_path_info  ^((?U).+.php)(/?.+)$;        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;        fastcgi_param  PATH_INFO  $fastcgi_path_info;        fastcgi_param  PATH_TRANSLATED  $document_root$fastcgi_path_info;        include fastcgi_params;    }

解决,完整配置

server {    listen       80;    server_name  xxxxxxx ;    root  www;    add_header X-Frame-Options "SAMEORIGIN";    add_header X-XSS-Protection "1; mode=block";    add_header X-Content-Type-Options "nosniff";    charset utf-8;    index index.html index.htm index.php;    location / {        try_files $uri $uri/ /index.php$uri;    }    location = /favicon.ico { access_log off; log_not_found off; }    location = /robots.txt  { access_log off; log_not_found off; }    error_page 404 /index.php;    location ~ .php(.*)$ {        fastcgi_pass   127.0.0.1:9000;        fastcgi_index index.php;        fastcgi_split_path_info  ^((?U).+.php)(/?.+)$;        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;        fastcgi_param  PATH_INFO  $fastcgi_path_info;        fastcgi_param  PATH_TRANSLATED  $document_root$fastcgi_path_info;        include fastcgi_params;    }    location ~ /.(?!well-known).* {        deny all;    }}

推荐学习:thinkphp教程

以上就是ThinkPHP 的 nginx 配置踩坑的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/364440.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年11月6日 04:30:32
下一篇 2025年11月6日 04:35:05

相关推荐

发表回复

登录后才能评论
关注微信