Nginx 전단 매 립 점 데이터 수집
29170 단어 Nginx
준비 작업 1.openresty 다운로드 경로:http://openresty.org/cn/download.html
openresty 설치http://openresty.org/cn/installation.html
실험 과정 에서 데 이 터 를 수집 해 야 하 는 페이지 코드
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<script src="jquery-3.4.1.js"></script>
<title>start </title>
<script type="text/javascript">
var _maq = _maq || [];
_maq.push(['_setAccount','u-z1234']);
(function() {
var ma = document.createElement('script');
ma.type = 'text/javascript';
ma.async = true;
ma.src = 'https://[ ip]/ma.js';
var s = document.getElementsByTagName('script')[0];
s.parentNode.insertBefore(ma, s);
})();
</script>
</head>
<body>
<h1><a href="/end"> end </a></h1>
</body>
</html>
서버 에 요청 ma.js ma.js 를 보 내 서 페이지 에서 수집 해 야 할 데 이 터 를 통합 한 다음 encodeURIComponent 방법 으로 문자열 을 URI 구성 요소 로 인 코딩 하고 image 대상 이 파 라 메 터 를 가지 고 서버 에 요청 을 보 냅 니 다.ma.js 파일 은 Nginx 루트 디 렉 터 리 의 HTML 폴 더 에 두 면 됩 니 다.
(function () {
var params = {};
//Document
if(document) {
params.domain = document.domain || '';
params.url = document.URL || '';
params.title = document.title || '';
params.referrer = document.referrer || '';
}
//Window
if(window && window.screen) {
params.sh = window.screen.height || 0;
params.sw = window.screen.width || 0;
params.cd = window.screen.colorDepth || 0;
}
//navigator
if(navigator) {
params.lang = navigator.language || '';
}
// _maq
if(_maq) {
for(var i in _maq) {
switch(_maq[i][0]) {
case '_setAccount':
params.account = _maq[i][1];
break;
default:
break;
}
}
}
//
var args = '';
for(var i in params) {
if(args != '') {
args += '||';
}
args += i + '=' + encodeURIComponent(params[i]);
}
// Image
var img = new Image(1, 1);
img.src = 'https://[ ip ]/log.gif?' + args; })();
Nginx.conf 설정 Nginx 는 HTTPS 를 지원 하기 때문에 SSL 설정 이 있 습 니 다.직접 실험 을 하면 HTTPSserver 에 있 는 코드 를 httpserver 로 옮 길 수 있 습 니 다.페이지 에서 요청 한 ma.js 는 마지막 으로 image 대상 으로 파 라 메 터 를 가지 고 서버 에 요청 을 보 냈 습 니 다.요청/log.gif,nginx 는 location/log.gif 에 일치 하고 쿠키 를 처리 한 다음 내부 의/i-log 를 요청 하 였 습 니 다.그리고 location/i-log 처리 매개 변수 args,logformat 의 형식 을 지정 한 디 렉 터 리 에 출력 한 다음 빈 문자열 을 되 돌려 줍 니 다.그러면 필요 한 데 이 터 를 수집 할 수 있 습 니 다.
#user nobody;
worker_processes 2;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
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"';
log_format tick escape=json
"$msec||$remote_addr||$status||$body_bytes_sent||$u_domain||$u_url||$u_title||$u_referrer||$u_sh||$u_sw||$u_cd||$u_lang||$http_user_agent||$u_account";
#access_log logs/access.log main;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
# HTTP server
server {
listen 80;
server_name localhost;
#
rewrite ^(.*)$ https://$host$1 permanent;
#charset koi8-r;
#access_log logs/host.access.log main;
}
# HTTPS server
server {
listen 443 ssl;
server_name localhost;
root html;
index index.html index.thm;
#ssl
ssl_certificate /usr/local/openresty/nginx/cert/xxx.crt;
ssl_certificate_key /usr/local/openresty/nginx/cert/xxx.key;
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
location /log.gif {
# gif
default_type image/gif;
# access_log, subrequest log
access_log off;
access_by_lua "
-- cookie __utrace
local uid = ngx.var.cookie___utrace
if not uid then
-- cookie, md5( +IP+ )
uid = ngx.md5(ngx.now() .. ngx.var.remote_addr .. ngx.var.http_user_agent)
end
ngx.header['Set-Cookie'] = {'__utrace=' .. uid .. '; path=/'}
if ngx.var.arg_domain then
-- subrequest /i-log , cookie
ngx.location.capture('/i-log?' .. ngx.var.args .. '&utrace=' .. uid)
end
";
#
add_header Expires "Fri, 01 Jan 1980 00:00:00 GMT";
add_header Pragma "no-cache";
add_header Cache-Control "no-cache, max-age=0, mustrevalidate";
# 1×1 gif
empty_gif;
}
location /i-log {
# location,
internal;
# , unescape, ngx_set_misc
set_unescape_uri $u_domain $arg_domain;
set_unescape_uri $u_url $arg_url;
set_unescape_uri $u_title $arg_title;
set_unescape_uri $u_referrer $arg_referrer;
set_unescape_uri $u_sh $arg_sh;
set_unescape_uri $u_sw $arg_sw;
set_unescape_uri $u_cd $arg_cd;
set_unescape_uri $u_lang $arg_lang;
set_unescape_uri $u_account $arg_account;
#
log_subrequest on;
# ma.log tick
access_log /usr/local/openresty/nginx/nginx_logs/ma.log tick;
#
echo '';
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;
#}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
#location ~ \.php$ {
# root html;
# fastcgi_pass 127.0.0.1:9000;
# fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
# include fastcgi_params;
#}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
}
# another virtual host using mix of IP-, name-, and port-based configuration
#
#server {
# listen 8000;
# listen somename:8080;
# server_name somename alias another.alias;
# location / {
# root html;
# index index.html index.htm;
# }
#}
#server {
# listen 443 ssl;
# server_name localhost;
# ssl_certificate cert.pem;
# ssl_certificate_key cert.key;
# ssl_session_cache shared:SSL:1m;
# ssl_session_timeout 5m;
# ssl_ciphers HIGH:!aNULL:!MD5;
# ssl_prefer_server_ciphers on;
# location / {
# root html;
# index index.html index.htm;
# }
#}
}
시간 당 로그 분할 스 크 립 트
#!/bin/bash
#
log_path='/usr/local/openresty/nginx/nginx_logs/ma.log'
#
new_log_path='/usr/local/openresty/nginx/nginx_logs_byhour'
#
curr_time=`date -d "1 hour ago" +"%Y%m%d_%H%M%S"`
# ,
mv $log_path $new_log_path/$curr_time.log
kill -USR1 `cat /usr/local/openresty/nginx/logs/nginx.pid`
정시 임무
0 * * * * /root/nginx_cplog.sh
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
linux2에 nginx 설치설치 가능한 nginx를 확인하고, 해당 nginx를 설치한다. localhost 혹은 해당 ip로 접속을 하면 nginx 화면을 볼 수 있다....
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.