好大一个坑:在Nginx上将PHP网页放在二级目录

这篇具有很好参考价值的文章主要介绍了好大一个坑:在Nginx上将PHP网页放在二级目录。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、原由

只有一个域名,以前用php编写的网页又不能放弃,考虑将其移至二级目录下,例如:

https://abc.com/html

2、运行环境

Linux服务器上,用docker容器。Nginx和php-fpm各自运行在不同的容器中,Nginx在前端负责接收http请求,将其分发到后面不同的服务容器中。收到PHP网页请求就交给php-fpm解析,php-fpm的端口是9000。

3、Nginx配置

3.1 如果使用根目录

如果php网页在根目录下就比较简单,用下面配置即可:

server {
    listen  80;
    server_name abc.com;
    root   /usr/share/nginx/html;
    index index.html index.htm index.php;

    location / {
        try_files $uri $uri/ /index.php?$query_string;

        location ~ \.php(.*)$ {
                root   /var/www/html/phpmy;
                fastcgi_pass 172.17.0.1:9000;   #php容器的IP地址
                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;
        }
    }
}

3.2 将php网页放在二级目录

将3.1的方法直接移植过来是行不通的,先放结果,正确的配置文件如下:

    location /html {
        alias  /var/www/html/; #PHP文件在php-fpm容器中的目录
        index index.php index.htm index.html;
        try_files $uri $uri/ /html/index.php?$query_string;
 
        if (!-e $request_filename) {
            rewrite ^/html/(.*)$ /html/index.php?$1 last;
            break;
        }
        
         location ~ \.php(.*)$ {
            fastcgi_pass 172.17.0.1:9000;   # PHP容器的IP地址
            fastcgi_index index.php;
            fastcgi_split_path_info ^((?U).+\.php)(/?.+)$;
            fastcgi_param SCRIPT_FILENAME $request_filename;
            include  fastcgi_params;        
        }

        location ~* \.(htm|html|jpg|jpeg|png|gif|ico|js|css|map)$ {
            root  /usr/share/nginx/;   # 静态文件目录比真实目录少一级,访问时会自动加上url的子目录
        }    
    
    }

与在根目录下的情况不同,传给 location /html的目录是PHP文件在php-fpm容器中的目录。php-fpm接收的SCRIPT_FILENAME是 $request_filename

  • 下面一段是解决页面跳转后不能正确定位问题:
        if (!-e $request_filename) {
            rewrite ^/html/(.*)$ /html/index.php?$1 last;
            break;
        }
  • 这个location是解决非php文件不能访问的问题:
location ~* \.(htm|html|jpg|jpeg|png|gif|ico|js|css|map)$ {
           root  /usr/share/nginx/;   # 静态文件目录比真实目录少一级,访问时会自动加上url的子目录
       }    

目前这个配置文件还是有一些问题,比如直接访问目录时不能直接跳到index.php文件,访问时必须这样:文章来源地址https://www.toymoban.com/news/detail-615095.html

https://abc.com/html/index.php

到了这里,关于好大一个坑:在Nginx上将PHP网页放在二级目录的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 使用Nginx反向代理,将React项目打包后部署到服务器的二级子目录

    我们上线一个项目的时候如果服务器上只有这一个项目的话可以直接将打包后的代码部署到服务器指定的根目录,然后直接上线看就可以看到,不用配置其他项。 但是,如果服务器有多个项目的话,我们就需要将代码部署到服务器根目录里边的子目录了,而放到子目录的话,

    2024年03月26日
    浏览(56)
  • PHP - Laravel 创建项目到服务器(nginx、apache)运行(附带目录结构

    // 对应 composer.json 中的 require,一般用这个 $ composer require barryvdh/laravel-ide-helper // 如果只想在开发环境安装请加上 --dev,对应 composer.json 中的 require-dev $ composer require barryvdh/laravel-ide-helper --dev 如果报错 Installation failed, reverting ./composer.json and ./composer.lock to their original content 点这

    2024年04月27日
    浏览(50)
  • HTML、PHP实战:搭建一个网页登录页面。

    一、实验环境。 MySQL5.7.26 FTP0.9.60 Apache2.4.39 我这里用的是PHPstudy小皮一键搭建的。 数据库  二、登录页面。 登录页面前端代码 文件名:denglu.html 登录页面后端代码 文件名:denglu.php 使用127.0.0.1跟文件名访问网页。 效果演示   可以看到当我们输入用户名:zhangsan 密码:12345

    2024年02月06日
    浏览(55)
  • 小程序https域名校验文件放在根目录

    微信公众号平台 - 开发管理 - 开发设置 - 业务域名 我这里配置的https主要是用来转发后台接口路径的 https://域名/校验文件名.txt,有返回即配置成功

    2024年02月11日
    浏览(53)
  • 手动下载composer项目放在vendor目录下并加载

    比如添加easywechat。 说是手动,其实半手动。 到 GitHub 或gitee下载 1、下载后放在项目根目录下的 vendor文件夹 2、在项目根目录的文件 composer.json文件 添加一段 3、命令生成新的 Composer 自动加载器 4、执行完成后 ,就添加了自动加载代码。 以下图可以不用看,仅仅是执行前后

    2024年02月16日
    浏览(39)
  • FastAPI + NGINX + Gunicorn:一步一步教你部署一个高性能的Python网页应用

    部署一个 FastAPI 应用到你的服务器是一项复杂的任务。如果你对 NGINX 、 Gunicorn 和 Uvicorn 这些技术不熟悉,可能会浪费大量的时间。如果你是刚接触 Python 语言不久或者希望利用 Python 构建自己的Web应用程序,本文的内容可能会让你第一次部署时更节省时间。 FastAPI 是用于开发

    2024年02月05日
    浏览(66)
  • Python之selenium关于Chrome驱动位置,闪退的问题和安装路径_chromedriver放在哪个目录下

    放置的位置和Python执行的文件位置要一样,这样才能够使用最新的驱动。 注意:在selenium v4.4.0以上的版本,可以不用把浏览器的驱动放在跟Python执行程序一起。 但是需要用一段代码去说明,调用函数。 2、浏览器的驱动与Python启动程序不在一个目录: 方法一:(注意这种目

    2024年04月25日
    浏览(48)
  • WordPress做权重站:二级目录伪静态写法

    我喜欢用WordPress建站,但是每个网站我都会写3个以上的二级目录,为什么了,因为WordPress数据量过大会导致数据库很大很卡,所以这种做法可以减轻数据库的负荷。我一般每个目录的文章达到15万篇就不会再更新了,3个目录加起来大约50万篇左右;二级目录的做法可以递增网

    2024年02月14日
    浏览(47)
  • vue3 vite 打包 二级目录刷新空白

    控制台报错:Failed to load module script: Expected a JavaScript module script but the server responded with a MIME type of \\\"text/html\\\". Strict MIME type checking is enforced for module scripts per HTML spec. 打包路径问题,修改vite.config.ts文件的base

    2024年02月09日
    浏览(58)
  • 【尝试】域名验证:配置github二级目录下的txt文件

    🌈你好呀!我是 是Yu欸 🌌 2024每日百字篆刻时光,感谢你的陪伴与支持 ~ 🚀 欢迎一起踏上探险之旅,挖掘无限可能,共同成长! 前些天发现了一个人工智能学习网站,内容深入浅出、易于理解。如果对人工智能感兴趣,不妨点击查看。 尝试配置github仓库搭建的hexo博客的域

    2024年04月14日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包