在NGINX作反向代理,CI(CodeIgniter)的PHP框架下限制管理目录的IP的实现

这个搞得有点久,不过,还算完美解决。

主要是前端NGINX,后端也是NGINX。

前端的NGINX不好作相关的URL权限限制,因为所有的URL在CI里都要经过INDEX.PHP重定向。

并且,在后端NGINX作限制,更比前端安全。

我大约是按以下几个套路来的,都是后端NGINX操作,是不是严格步骤,要进一步考察。

1,real_ip_header X-Forwarded-For;存放真实IP变量。(这一步未真再验证)

2,在配置里加入如下东东。(以限制url里有admin的关键字为例)


location  ~ .*admin.* {
                allow 192.168.1.0/28;#内网要开相关前端IP,这个验证过
                allow 1.2.3.4;#我们正正允许的IP
                deny all;#禁掉所有
                rewrite ^/(.*)$ /index.php/$1 last;#这个好关键,CI就是这样玩的,没办法。
                location ~ \.php(.*)$  {
                        fastcgi_pass   127.0.0.1:9000;
                        fastcgi_index  index.php;
                        fastcgi_split_path_info  ^((?U).+\.php)(/?.+)$;
                        fastcgi_param  SCRIPT_FILENAME  /wdzj/data$fastcgi_script_name;
                        fastcgi_param  PATH_INFO  $fastcgi_path_info;
                        fastcgi_param  PATH_TRANSLATED  $document_root$fastcgi_path_info;
                        include        fastcgi_params;
                }#再解析PHP,不如会有500之类解析错误
        }

顺便 ,再来个CI在NGINX下的跳转规则(因为NGINX不支持多条件判断,就用变量判断了):

set $ci 0;
if (!-f $request_filename){
         set $ci "${ci}a";
}
if (!-d $request_filename){
         set $ci "${ci}b";
}
if ($uri !~ "^(index.php|images|robots.txt)"){
          set $ci "${ci}c";
}
if ( $ci = "0abc")
{
  rewrite ^/(.*)$ /index.php/$1 last;
}

有图有真相:

时间: 2024-07-30 13:21:23

在NGINX作反向代理,CI(CodeIgniter)的PHP框架下限制管理目录的IP的实现的相关文章

Node.js站点使用Nginx作反向代理时配置GZip压缩的教程_nginx

node.js 开发的站点,如果你也是用了nginx实现反向代理. 那么在服务端可以轻松实现 gzip 压缩,让站点浏览更顺畅. 前提条件: node.js + nginx 反向代理. node.js 需要做的工作: express 4.0以下版本: app.use(express.compress()); //主要是这句 app.use(express.json()); app.use(express.urlencoded()); app.use(express.bodyParser());

Nginx服务器作反向代理时的缓存配置要点解析_nginx

这里给出示例,并详解. http { [...] [...] proxy_cache_path /data/nginx/cache/one levels=1:2 keys_zone=one:10m max_size=10g; proxy_cache_key "$host$request_uri"; server { server_name www.jb51.net jb51.net; root /home/www.jb51.net/web; index index.php index.

Nginx 作为反向代理优化要点proxy_buffering

当nginx用于反向代理时,每个客户端将使用两个连接:一个用于响应客户端的请求,另一个用于到后端的访问: 那么,可以从如下配置起步: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 # One worker per CPU-core. worker_processes  2; events {     worker_connections  8096;     multi_accept        on;     use                 epoll; } wo

如何在阿里云上部署Nginx实现反向代理?

如何在阿里云上部署Nginx实现反向代理? 云中沙箱实验"在阿里云上部署Nginx实现反向代理",教您如何在阿里云上部署Nginx实现反向代理? 云中沙箱,阿里云官方实验平台.网址:http://lab.aliyunedu.net   一.基本概念 业务背景     在很多情况下,可能只有一个公网IP地址,但是内部有多个服务需要映射出去,如:www.domain.com,oa.domain.com,并且,相关的服务不在同一台服务器上面的时候,那直接做端口映射就无法达到要求了.这时设置反

【NodeJs】Linux安装NodeJs并配合Nginx实现反向代理

Linux安装NodeJs并配合Nginx实现反向代理 NodeJs 是什么 Node.js是一个Javascript运行环境(runtime).实际上它是对Google V8引擎进行了封装.V8引 擎执行Javascript的速度非常快,性能非常好. Node.js对一些特殊用例进行了优化,提供了替代的API,使得V8在非浏览器环境下运行得更好. 本地安装(OS X) 版本选择 V4.4.4,长期支持版本,成熟可靠 V6.2.0 稳定版本,最新特性 这里我还是倾向于使用最新的版本~ 下载安装包

详解Nginx + Tomcat 反向代理 负载均衡 集群 部署指南_nginx

Nginx是一种服务器软件,也是一种高性能的http和反向代理服务器,同时还是一个代理邮件服务器.也就是说,我们在Nginx上可以发布网站,可以实现负载均衡(提高应答效率,避免服务器崩溃),还可以作为邮件服务器实现收发邮件等功能.而最常见的就是使用Nginx实现负载均衡. Nginx与其他服务器的性能比较: Tomcat服务器面向Java语言,是重量级的服务器,而Nginx是轻量级的服务器.Apache服务器稳定.开源.跨平台,但是Apache服务器不支持高并发,Nginx能支持处理百万级的TC

Linux安装NodeJs并配合Nginx实现反向代理_Linux

本文介绍了Linux安装NodeJs并配合Nginx实现反向代理 ,具体如下: NodeJs是什么? Node.js是一个JavaScript运行环境(runtime).实际上它是对Google V8引擎进行了封装.V8引 擎执行Javascript的速度非常快,性能非常好. Node.js对一些特殊用例进行了优化,提供了替代的API,使得V8在非浏览器环境下运行得更好. 本地安装(OS X) 版本选择 V4.4.4,长期支持版本,成熟可靠 V6.2.0 稳定版本,最新特性 这里我还是倾向于使用

详解Nginx + Tomcat 反向代理 如何在高效的在一台服务器部署多个站点_nginx

上一篇分享了 Nginx + Tomcat 反向代理 负载均衡 集群 部署指南,感觉还是相当实用型的,但是一般集群部署是基于大访问量的,可能有的企业用不到,类似一些企业官网,访问量并不是很大,基于这个新需求,今天专门为大家分享一下 Nginx + Tomcat 反向代理 如何在一台服务器部署多个站点,节省服务器开支,就在这篇文章了. 首先我们需要安装好Nginx.jdk.Tomcat,安装方法已经在 上一篇 说过了,本篇不再赘述. 下来看一下我们的需求,我这里有三个网站项目工程需要部署(依次对应

Nginx服务器作反向代理实现内部局域网的url转发配置_nginx

情景由于公司内网有多台服务器的http服务要映射到公司外网静态IP,如果用路由的端口映射来做,就只能一台内网服务器的80端口映射到外网80端口,其他服务器的80端口只能映射到外网的非80端口.非80端口的映射在访问的时候要域名加上端口,比较麻烦.并且公司入口路由最多只能做20个端口映射.肯定以后不够用. 然后k兄就提议可以在内网搭建个nginx反向代理服务器,将nginx反向代理服务器的80映射到外网IP的80,这样指向到公司外网IP的域名的HTTP请求就会发送到nginx反向代理服务器,利用n