澳门新萄京根据IP地址控制访问的代码_php实例_脚
分类:www.澳门新萄京赌场

复制代码 代码如下:

知识点:

假设有 IP 地址范围 192.168.0.0~192.168.0.255,只允许此 IP 段访问的代码如下: 复制代码 代码如下: = 0 && $to <= 0)) echo "Access Denied"; else echo "Homepage"; ?> 从流程上讲,这段代码首先捕获访客 IP 地址,然后判断该 IP 地址是否符合访问条件。符合则正常输出页面,反之拒绝访问。 据此,如果用户 IP 地址满足要求,只需简单输出或包含页面文件即可。文件包含代码如下: 复制代码 代码如下: = 0 && $to <= 0)) echo "Access Denied"; else include"; ?> 当然,也可以按判断结果跳转至不同页面。跳转代码如下: 复制代码 代码如下: = 0 && $to <= 0)) header('Location: //www.jb51.net/404.html'); else header('Location: //www.jb51.net/index.html'); ?>

一、Nginx反向代理配置:

python Flask框架下获取用户的IP地址的范例代码,下面的代码包含了html页面和python代码,非常详细,如果你正使用Flask,也可以学习一下最基本的Flask使用方法。

0) { header('HTTP/1.1 301 Moved Permanently'); header("Location: //www.jb51.net"); } ?>

  server的语法:

1、虚拟主机配置

from flask import Flask, render_template, request
# Initialize the Flask application
app = Flask(__name__)
# Default route, print user's IP
@app.route('/')
def index():
  ip = request.remote_addr
  return render_template('index.html', user_ip=ip)
if __name__ == '__main__':
  app.run(
        host="0.0.0.0",
        port=int("80")
  )

  upstream语法:

复制代码 代码如下:

html模板代码

    upstream中192.168.100.1不是ip只是个标识,只要和下面的proxy_pass 对应即可。

location / {
    try_files $uri @apache;
}

<!DOCTYPE html>
<html lang="en">
  <head>
    <link href="//netdna.bootstrapcdn.com/bootstrap/3.0.0/css澳门新萄京根据IP地址控制访问的代码_php实例_脚本之家,Flask获取用户的IP地址的代码。/bootstrap.min.css"
          rel="stylesheet">
  </head>
  <body>
    <div class="container">
      <div class="header">
        <h3 class="text-muted">How To Get The IP Address Of The User</h3>
      </div>
      <hr/>
      <div>
        You IP address is: <strong>{{user_ip}}</strong>
    <div class="header">
        <h3 class="text-muted">Code to retrieve the IP</h3>
      </div>
      <hr/>
<pre>
from flask import Flask, render_template, request
# Initialize the Flask application
app = Flask(__name__)
# Default route, print user's IP ,
@app.route('/')
def index():
  ip = request.remote_addr
  return render_template('index.html', user_ip=ip)
</pre>
      </div>
    </div>
  </body>
</html>

  基于IP的虚拟主机:

location @apache {
internal;
    proxy_pass ;
    include proxy.conf;
}

    listen和server_name中多加上端口也没问题

location ~ .*.(php|php5)?$  {
    proxy_pass ;
    include proxy.conf;
}

    listen可以监听在虚拟ip上面

2.代理配置

 

复制代码 代码如下:

代码:

proxy_connect_timeout 300s;#请求连接后端服务器超时时间。即在规定时间,后端必须响应前端握手请求。
proxy_send_timeout 900;#澳门新萄京,后端数据回传时间。即在规定时间,后端服务器必须将所有数据回传完毕。
proxy_read_timeout 900;#后端服务器响应时间。即连接成功,在后端排队等候处理不能超过的时间。
proxy_buffer_size 32k;#从后端服务器读取的头信息的缓冲区大小。
proxy_buffers 4 64k;#从后端服务器读取的头信息的缓冲区数目和大小
proxy_busy_buffers_size 128k;#如果服务器繁忙,可申请的proxy_buffers大小
proxy_temp_file_write_size 64k;#代理缓存临时文件大小
proxy_max_temp_file_size 128m;#代理最大缓存临时文件大小
proxy_redirect off;
proxy_hide_header Vary;
proxy_set_header Accept-Encoding '';
proxy_set_header Referer $http_referer;
proxy_set_header Cookie $http_cookie;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

upstream 192.168.100.1{

二、Apache获取真实IP模块
获取真实IP地址有Apache有2个模块:
mod_rpaf:Apache-2.2支持;Apache-2.4不支持。网上教程很多,而且官网链接已失效
mod_remoteip:Apache-2.4自带模块;Apache-2.2支持;推荐

  server 10.10.30.100:8081 backup;
  server 10.10.30.101:8081 max_fails=3  fail_timeout=5s;
  server 10.10.30.102:8081 max_fails=3  fail_timeout=5s;     #健康状态检测
}

A、使用mod_rpaf模块
1、安装 wget
tar -xzvf mod_rpaf-0.6.tar.gz
cd mod_rpaf-0.6/
/usr/local/apache/bin/apxs  -i -c -n mod_rpaf-2.0.slo mod_rpaf-2.0.c
2、添加Apache配置

server {
  listen 192.168.100.1:8020;
  server_name 192.168.100.1:8020;
location / {
  index index.jsp;
  proxy_pass ;
  proxy_cookie_path /192.168.100.1/ /;
  proxy_set_header Host $http_host;
  proxy_set_header Cookie $http_cookie;
  proxy_set_header X-Real-IP $remote_addr;
  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  proxy_set_header X-Forwarded-Proto $scheme;
  }

复制代码 代码如下:

location /download/ {
  root html;
  }

vi  /usr/local/apache/conf/httpd.conf
Include conf/extra/httpd-rpaf.conf
vi /usr/local/apache/conf/extra/httpd-rpaf.conf

}

LoadModule rpaf_module        modules/mod_rpaf-2.0.so
RPAFenable On
RPAFsethostname On
RPAFproxy_ips 127.0.0.1 10.8.0.110 # 代理服务器的ip地址(记得做相应修改)
RPAFheader X-Forwarded-For

 

备注:RPAFproxy_ips后面添加代理服务器的ip地址,有几个填几个
3.测试

#存在iptables的情况下记得开启iptables的端口

复制代码 代码如下:

 

# /usr/local/apache/bin/apachectl -t
# /usr/local/apache/bin/apachectl restart
# 看日志是否获取到了真实IP

B、使用mod_remoteip模块 1、Apache-2.2下配置mod_remoteip如下:
1)、安装

复制代码 代码如下:

wget
/usr/local/apache/bin/apxs -i -c -n mod_remoteip.so mod_remoteip.c

2)、修改配置文件:

复制代码 代码如下:

vi /usr/local/apache/conf/httpd.conf
Include conf/extra/httpd-remoteip.conf
vi /usr/local/apache/conf/extra/httpd-remoteip.conf
LoadModule remoteip_module modules/mod_remoteip.so
RemoteIPHeader X-Forwarded-For
RemoteIPInternalProxy 127.0.0.1

3)、测试:

复制代码 代码如下:

# /usr/local/apache/bin/apachectl -t
# /usr/local/apache/bin/apachectl restart
# 看日志

2、Apache-2.4配置mod_remoteip 自带mod_remoteip模块不需要安装,只需要修改日志格式

复制代码 代码如下:

LogFormat "%h %a %l %u %t "%r" %>s %b "%{Referer}i" "%{User-Agent}i"" combined
LogFormat "%h %a %l %u %t "%r" %>s %b" common
LogFormat "%h %l %u %t "%r" %>s %b "%{Referer}i" "%{User-Agent}i" %I %O" combinedi

在日志格式中加上%a

本文由澳门新萄京发布于www.澳门新萄京赌场,转载请注明出处:澳门新萄京根据IP地址控制访问的代码_php实例_脚

上一篇:澳门新萄京:数值函数安详严整_Mysql_脚本之家, 下一篇:没有了
猜你喜欢
热门排行
精彩图文