Laravel Nginx 覆盖 phpMyAdmin

Posted

技术标签:

【中文标题】Laravel Nginx 覆盖 phpMyAdmin【英文标题】:Laravel Nginx overriding phpMyAdmin 【发布时间】:2015-01-12 23:48:57 【问题描述】:

我遇到了一个奇怪的问题,即 Laravel 路由系统覆盖了我的 phpMyAdmin。当我第一次设置服务器时,我为 phpMyAdmin 设置的 nginx 运行良好,然后在安装 Laravel 之后,我在 nginx 配置中唯一更改的是根。现在不是去phpmyadmin,而是在laravel中“哎呀出了问题”,这是laravel说该页面没有路由。关于如何强制 nginx 不使用 laravel 作为该 URL 的任何想法?这是我当前的配置。

【问题讨论】:

你怎么知道“哎呀,出了点问题!”意思是laravel说没有路线? 我每天在 LAMP 堆栈上使用 laravel。如果您打开调试,它会在此页面上显示相当于 404。 【参考方案1】:

编辑以提请注意Xavier Lucas'的更正:

~ \.php$ 位置优先,因为它是一个正则表达式。将^~ 添加到***/phpmyadmin 位置(也使其成为正则表达式位置),如果匹配,则允许优先。

location ^~ /phpmyadmin 
  ...


location ~ \.php$ 
  ...
    

~ \.php$ 位置块正在处理以“.php”结尾的请求,然后才到达/phpmyadmin

尝试颠倒这两个块:

location /phpmyadmin 
  ...


location ~ \.php$ 
  ...

【讨论】:

@CalvinMoss 我会更新我的答案,但首先:您在更改文件后运行service nginx reload 来加载这个新配置,对吧? 是的,我执行了重新启动命令,然后停止并在此之后启动,看看这是否会有所作为。 :// 需要纠正的几点:位置的简单交换将无济于事,因为 php 位置的优先级是由于其性质:正则表达式位置优先于前缀位置。交换这两个块后,使用^~ 运算符使前缀位置具有更高的优先级。嵌套位置必须声明父位置的前缀,否则 nginx 会认为它超出范围并引发错误,因此他的 phpmyadmin 位置是完全合法的。 这也不起作用:(你认为这可能与大写有关吗?我的 nginx 中的所有引用都是 phpmyadmin 但 URL 是 phpMyAdmin,目录也是。【参考方案2】:

它最终成为我的文件夹的名称是 phpMyAdmin,而 nginx 配置是 phpmyadmin,所以它不起作用。然而!我会遇到 wolfemm 回答的相同问题

【讨论】:

以上是关于Laravel Nginx 覆盖 phpMyAdmin的主要内容,如果未能解决你的问题,请参考以下文章

关于Laravel 与 Nginx 限流策略防止恶意请求

LAMP的fastcgi方式应用phpmyadm和wordpress

实验:LAMP的php模块方式应用phpmyadm和wordpress

如何覆盖验证规则登录 Laravel\Fortify?

扩展/覆盖 Laravel 验证器类

Laravel 5 覆盖summernote 图片上传