美文网首页
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)
                }
            }
        }
    }
    

    相关文章

      网友评论

          本文标题:OpenResty 返回请求IP

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