目录和文件暴露在根目录下的 nginx 配置演示

这只能是一种构想,现实中并不是随心所欲都能够去配置主机,也许别人包含了一段配置在根目录下面,权限受限的情况怎么办?今天,就用 CodeIgliter 来开刀改造一下,把 public 下面的 index.php 文件放入根目录下面,里面的目录和文件暴露在根目录下面,也就暴露在互联网下面了(这种方法是不可取的,以前的 CodeIgliter 就是这样干的),修改了一下代码,使框架运行正常,这就是 CodeIgliter 原来的样子,现在越来越像 laravel 了。根目录下面添加进 phpMyAdmin.
摘要由CSDN通过智能技术生成

目录

一、统一环境:

1)安装docker-desktop

2)之后,请确保已经安装并启用了适用于 Linux 的 Windows 子系统 2 (WSL2)。

3)然后在 Microsoft Store  里安装任意 Linux 版本。

4)使用 windows 子系统,需要在 Microsoft Store 安装 windows Terminal 工具,方便进入 Linux 子系统

二、站点目录结构

三、nginx 详细配置文件:

参照官方文档:

1)nginx http 核心模块

2)nginx 模块 ngx_http_fastcgi_module 配置文档(php 配置部分)

3)php 官方安装配置示例:

说明:

1)上面的代码抄在这里: limit_req_zone $binary_remote_addr zone=limiter:10m rate=80r/s; rate 不要设置太低,否则 phpMyAdmin 连接数据库时会报错

2)本案例的 fastcgi_params 内的文件内容如下:

四、目录和文件加密:

文件和目录加密后的效果图

1.对 phpinfo.php 敏感文件加密的效果

2.对目录加密的效果

3.对 php 文件加密的效果

4.对其它文件禁用的效果

5.在线生成密码

 6.passwd 文件存放内容示意图

五、常用 nginx 配置的内置变量

六、nginx配置禁止访问目录或禁止访问目录下的文件

禁止访问目录下的文件

禁止访问特定后缀文件

禁止访问某个目录下的php后缀文件

禁止访问多个目录下的php后缀文件

禁止访问目录或目录下文件

禁止访问目录

禁止访问目录下文件

nginx location 的匹配语法

七、nginx 限流功能

配置如下

八、Nginx 的 fastcgi 模块提供了 fastcgi_param 指令来处理这些映射关系


这只能是一种构想,现实中并不是随心所欲都能够去配置主机,也许别人包含了一段配置在根目录下面,权限受限的情况怎么办?比如说像百度云的虚拟主机就是这样的,对于许多中小型网站来说性能已经足够了。今天,就用 CodeIgliter 来开刀改造一下,把 public 下面的 index.php 文件放入根目录下面,里面的目录和文件暴露在根目录下面,也就暴露在互联网下面了(这种方法是不可取的,以前的 CodeIgliter 就是这样干的),修改了一下代码,使框架运行正常,这就是 CodeIgliter 原来的样子,现在越来越像 laravel 了。

根目录下面添加进 phpMyAdmin Mysql 数据库管理、phpRedisAdmin Redis 数据库管理和 Kodexplorer 资源管理器。这些文件和目录全都暴露在根目录下,也就暴露在了互联网中。下面的配置就是解决在这种情况下,如何加密和禁用这些目录和敏感文件。

一、统一环境:

1)安装docker-desktop:

Docker Desktop for Mac and Windows | Dockerhttps://www.docker.com/products/docker-desktop

2)之后,请确保已经安装并启用了适用于 Linux 的 Windows 子系统 2 (WSL2)。

WSL 允许你在 Windows 10 上运行 Linux 二进制文件。关于如何安装并启用 WSL2,请参阅微软开发者文档:

安装 WSL | Microsoft Docshttps://docs.microsoft.com/zh-cn/windows/wsl/install

3)然后在 Microsoft Store  里安装任意 Linux 版本。

4)使用 windows 子系统,需要在 Microsoft Store 安装 windows Terminal 工具,方便进入 Linux 子系统:

5)lnmp 镜像地址:.2233466866/lnmp - Docker Image | Docker Hubhttps://hub.docker.com/r/2233466866/lnmp6)docker 操作命令,几个命令就可以解决了:

# 以下步骤要一个一个地来
# 以下内容如果复制,不要复制 $

# 如果不是root用户,还需将当前用户加入 docker 用户组

$ sudo gpasswd -a ${USER} docker

# 1.拉取镜像

$ docker pull 2233466866/lnmp

# 2.生成容器命令

$ docker run -dit \
-p 80:80 \  # 与宿主机绑定端口,才能用 http://localhost 访问
-p 443:443 \  # 与宿主机绑定端口,才能用 https://localhost 访问(需要配置)
-p 3306:3306 \  # MySQL 数据库访问端口
-p 9000:9000 \  # nginx 与 php 服务通信端口,同一容器下其实不用配置,官方偏要这样
-v /home/user/www:/www \  # 容器内站点目录绑定到宿主机目录
-v /home/user/mysql:/data/mysql \  # 容器内数据库目录绑定到宿主机目录
--restart=always \  # 开机容器自启
--privileged=true \  # 使用该参数,容器内的 root 用户拥有真正的 root 权限。
--name=lnmp \  # 容器名称
2233466866/lnmp  # 镜像名称

# user 是你自己的用户名,不要完全照抄。
# 以上的多行命令复制到 windows Terminal 命令行,按确定键即可。

# 3. 遍历容器,主要是获取容器 id,命令中 lnmp 可以换成 id

$ docker ps

# 4.进入容器命令,注意:容器名称要一致

$ docker exec -it lnmp /bin/bash


# 5.修改 Nginx 配置

$ vi /usr/local/nginx/conf/nginx.conf

# 注释掉 server 及以后的内容,添加 include /www/nginx.conf

7)MySQL 数据库可能要用到密码破解,这里不再详述,请搜索其它文章解决。

8)不要在 Windows 环境下尝试 nginx 配置,特别是在像 phpStudy、Wamp等等这样的环境下尝试 nginx 配置,因为 Windows 环境下安装的软件比较多,有些软件自带环境,相互干扰,使配置失效。尤其同时安装上 docker-desktop 和 phpStudy 这两个软件,干扰更大。

9)进入子系统站点目录编辑 code . 即可打开 VSCode 编辑器并且打开此目录,代码如下:

myusername@DESKTOP-J1SOKCR:~$ code .

二、站点目录结构:

三、nginx 详细配置文件:

参照官方文档:

1)nginx http 核心模块:

模块ngx_http_core_module (nginx.org)http://nginx.org/en/docs/http/ngx_http_core_module.html#var_time_local

2)nginx 模块 ngx_http_fastcgi_module 配置文档(php 配置部分):

Module ngx_http_fastcgi_module (nginx.org)https://nginx.org/en/docs/http/ngx_http_fastcgi_module.html

3)php 官方安装配置示例:

PHP: Unix 系统下的 Nginx 1.4.x - Manualhttps://www.php.net/manual/zh/install.unix.nginx.php

# 站点日志配置
error_log           /www/writable/logs/z_error.log;
access_log          /www/writable/logs/z_$host.log main;

# 防爆破破解密码,每秒钟只能允许访问 80 次,超过报错。
# zone=name:size,分配一个以 name 为名的并且大小为 size 的内存空间,用来存储访问的频次信息,对应:limiter:10m;
# rate=rate, 如rate=1r/s表示同一个IP每秒只允许一个请求通过。
# 参考官方文档配置:http://nginx.org/en/docs/http/ngx_http_limit_req_module.html
#
# 注意:这里 rate=80r/s 的值不要太低,否则 phpMyAdmin 连接数据库时会报 503 错误(设置成 50r/s 就开始报错了)!!
limit_req_zone $binary_remote_addr zone=limiter:10m rate=80r/s;

# 站点配置
server {
    listen      80;         # 访问站点的端口
    server_name localhost;  # 访问站点的域名
    root        /www;       # 站点映射的本地绝对目录。绝对目录: /directory/subdirectory 相对目录: ./directory/subdirecto
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

冰雪青松

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值