美文网首页
OpenResty 返回请求IP

OpenResty 返回请求IP

作者: 猪蹄胖 | 来源:发表于2023-08-31 14:26 被阅读0次

一、需求

需要了解PC端即时通讯软件,在每次开机时所处的地理位置,获取上网的公网IP

二、实现方式

通过openresty 在nginx.conf中,添加lua编写的逻辑代码,既能实现轻量级的服务。

#user  nobody;
worker_processes  1;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';
    access_log  logs/access.log  main;
    sendfile        on;
    #tcp_nopush     on;
    #keepalive_timeout  0;
    keepalive_timeout  65;
    #gzip  on;
    server {
        listen       8888;
        server_name  localhost;
        location / {
            add_header Access-Control-Allow-Origin *;
            add_header Access-Control-Allow-Methods 'GET, POST, OPTIONS';
            proxy_set_header Host $http_host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

            default_type        text/html;
            content_by_lua_block {
                local local_ip = ngx.req.get_headers()["X-Real-IP"]
                if local_ip == nil then
                    local_ip = ngx.req.get_headers()["x_forwarded_for"]
                end
                if local_ip == nil then
                    local_ip = ngx.var.remote_addr
                end
                ngx.say("Client_IP : ", local_ip)
            }
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
    server {
        listen       9999 ssl;
        server_name  localhost;
        ssl_certificate      /usr/local/openresty/nginx/conf/cert/cert.pem;
        ssl_certificate_key  /usr/local/openresty/nginx/conf/cert/key.pem;
        ssl_session_cache    shared:SSL:1m;
        ssl_session_timeout  5m;
        ssl_ciphers  HIGH:!aNULL:!MD5;
        ssl_prefer_server_ciphers  on;
        location / {
            add_header Access-Control-Allow-Origin *;
            add_header Access-Control-Allow-Methods 'GET, POST, OPTIONS';
            proxy_set_header Host $http_host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            default_type        text/html;
            content_by_lua_block {
                local local_ip = ngx.req.get_headers()["X-Real-IP"]
                if local_ip == nil then
                    local_ip = ngx.req.get_headers()["x_forwarded_for"]
                end
                if local_ip == nil then
                    local_ip = ngx.var.remote_addr
                end
                ngx.say("Client_IP : ", local_ip)
            }
        }
    }
}

相关文章

  • 服务端获取客户端ip

    返回http请求的ip

  • OpenResty中请求返回后继续执行

    接下来说的这个小技巧特别实用。在一些请求中,可能会做一些日志的推送、用户数据的统计、返回给终端数据等相关的操作。而...

  • nginx openresty

    openResty安装 centos 添加yum仓库,安装 openresty配置 服务端获得客户端的真实ip ...

  • OpenResty动态更新后端地址

    需求: OpenResty运行在Docker中,后端代理的server存在IP不固定的情况,需要OpenResty...

  • nginx+lua+redis 实现灰度发布

    根据用户id或者ip进行判断,进行灰度发布, openresty的配置语法和nginx相同 openresty s...

  • python获取公网ip

    思路:请求一个特定网站,网站返回内容包含公网ip。 使用python的requests库请求http://txt....

  • HTTP协议请求&响应

    页面请求的顺序 首先是客户端发送请求,然后DNS进行解析,给浏览器返回一个IP地址。浏览器根据这个IP地址再进行请...

  • Python实现动态域名解析----准备篇(二)

    本文承接第一篇自建返回IP地址的接口,如果没有其他服务器的话可以使用网上的一些免费的返回IP的请求接口,用自建的返...

  • 输入网址发生了什么

    自己头脑中的记忆 输入网址 利用DNS查询,得到ip 发送请求资源数据,请求报文 TCP协议三次握手 传输 返回数...

  • iOS监控-DNS劫持

    前言 DNS劫持指在劫持的网络范围内拦截域名解析的请求,分析请求的域名,把审查范围以外的请求放行,否则返回假的IP...

网友评论

      本文标题:OpenResty 返回请求IP

      本文链接:https://www.haomeiwen.com/subject/kxjzmdtx.html