当前位置: 首页 > 知识库问答 >
问题:

nginx服务器配置:访问分页wihout PHP扩展,并给予专用

姬泰
2023-03-14

正如标题所说,我正在寻找一种配置,使PHP文件无需从请求的URL扩展即可访问,并且不允许直接访问PHP。但也有用于PHP脚本和资源的单独文件夹。在本例中,www根目录中的文件夹按各自的顺序命名为“php”和“public”。我正在运行nginx/1.10。3在Ubuntu上。

我已经尝试了很多,几乎所有我能找到的DuckDuckGo上的物品。问题似乎出在“if”块上,因为即使文件存在,它也不会重写uri。我尝试将此重写包含在名为“@phpext”的单独位置,并将其包含在try_文件中,但没有成功。我已经测试了PHPCGI本身,并且工作良好。

server {
    listen 80 default_server;
    ...
    server_name potatoi-t.com www.potatoi-t.com;

    root /servers/www/;
    index index;

    location / {
        if (-f /php$uri.php) {
            rewrite ^(.*)$ /php$1.php last;
        }
        try_files /public$uri /public$uri/index =404;
    }
    location ~ \.php$ {
        fastcgi_pass unix:/run/php/php7.1-fpm.sock;
        include snippets/fastcgi-php.conf;
        internal;
    }
}

我希望以下url解析为以下文件:

http://www.potatoi-t.com/(通过php-cgi) /servers/www/php/index.php

http://www.potatoi-t.com/images/existingImage.php/servers/www/public/images/existingImage。php

http://www.potatoi-t.com/index.php(返回404)

http://www.potatoi-t.com/nonExistantFile(返回404)

非常感谢您的建议!我是自学成才的,对nginx配置还不熟悉,所以我非常感谢你的解释,如果不是nu的感觉的话。谢谢你!

共有1个答案

仲孙雅达
2023-03-14

提供的解决方案是可行的。-f运算符需要一个路径,而不是相对于根目录的URI。将URI与$document\u root变量相结合,可以生成文件系统中可能有效位置的路径。

-f运算符需要路径名而不是URI。尝试:if(-f$document_root/php$uri.php){...}

 类似资料:
  • 主要内容:1. 设置虚拟服务器,2. 配置位置,3. 使用变量,4. 返回特定状态码,重写URI请求,5. 重写HTTP响应本文介绍如何将NGINX配置作为Web服务器,并包括以下部分: 设置虚拟服务器 配置位置 使用变量 返回特定状态码 重写请求中的URI 重写HTTP响应 处理错误 在高层次上,将NGINX配置作为Web服务器有一些问题需要了解,定义它处理哪些URL以及如何处理这些URL上的资源的HTTP请求。 在较低层次上,配置定义了一组控制对特定域或IP地址的请求的处理的虚拟服务器。 用

  • 本文向大家介绍Nginx服务器限制访问速度的配置方法,包括了Nginx服务器限制访问速度的配置方法的使用技巧和注意事项,需要的朋友参考一下 用Nginx建站的同学,常会有限速需求。开发测试阶段在本地限速模拟公网的环境,方便调试。投入运营会有限制附件下限速度,限制每个用户的访问速度,限制每个IP的链接速度等需求。 刚遇到一个Bug在网络很卡的情况下才能重现,本地调试访问本机速度太快,配置Nginx成

  • 我想在使用Kotlin扩展函数时访问Java的私有字段。 假设我有一个Java类。ABC只有一个私有字段。我想用静态编程语言编写一个扩展函数,无论出于什么原因使用该字段。 Kotlin的功能是: 我得到的错误是: 无法访问“mPrivateField”:它在“ABC”中是专用的 有没有办法绕过这个限制?

  • 本文向大家介绍Nginx服务器上安装并配置PHPMyAdmin的教程,包括了Nginx服务器上安装并配置PHPMyAdmin的教程的使用技巧和注意事项,需要的朋友参考一下 一、 准备工作: 1. 如果mysql的root账号为空,需要设置root密码 CentOS下默认安装的mysql服务器,里面的root账号默认密码为空,首先为root设置一个密码 #mysqladmin -u root pas

  • 本文向大家介绍win7下FTP服务器配置访问教程,包括了win7下FTP服务器配置访问教程的使用技巧和注意事项,需要的朋友参考一下 也可以参考百度的教程win7下FTP服务器安装 一、FTP服务器功能打开 1、打开【控制面板】→【程序】→【打开或关闭Windows功能】→出现以下界面: 2、一定要将树形目录【Internet信息腐乳】展开,然后将【FTP服务】目录展开(注意的是所有其他配置在这里都