<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
nginx中常用紀錄檔格式設定如下:
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 /var/log/nginx/access.log main;
其中的main為紀錄檔格式的別名,在使用的時候直接使用別名即可。
例子:
10.0.3.137 - - [09/Oct/2020:09:41:02 +0800] "GET / HTTP/1.0" 304 0 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko" "10.1.9.98"
變數 | 含義 | 例子 |
---|---|---|
$remote_addr | 使用者端的ip地址(直連的IP,代理伺服器,顯示代理服務ip) | 10.0.3.137 |
$remote_user | 用於記錄遠端使用者端的使用者名稱稱 | - |
$time_local | 用於記錄存取時間和時區 | 08/Oct/2020:02:37:25 -0400 |
$request | 用於記錄請求的url、請求方法,協定的版本 | GET / HTTP/1.1 |
$status | 響應狀態碼 | 200 |
$body_bytes_sent | 給使用者端傳送的檔案主體內容位元組 | 0 |
$http_referer | 可以記錄使用者是從哪個連結存取過來的 | - |
$http_user_agent | 使用者所使用的代理(一般為瀏覽器) | Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko |
$http_x_forwarded_for | 可以記錄使用者端IP和所有經過的代理伺服器的IP | 10.1.9.98 |
日積月累下,紀錄檔檔案會越來越大,紀錄檔檔案太大嚴重影響伺服器效率,所以需要定時對紀錄檔檔案進行切割。
由於這裡是演示,所以切割方式是按分鐘來切割,正常生產上使用一般是按天來進行分割:
#!/bin/bash #紀錄檔檔案存放目錄 LOGS_PATH=/usr/local/nginx/logs #備份檔名稱 YESTERDAY=$(date -d "yesterday" +%Y%m%d%H%M) #重新命名紀錄檔檔案 mv ${LOGS_PATH}/access.log ${LOGS_PATH}/access_${YESTERDAY}.log mv ${LOGS_PATH}/error.log ${LOGS_PATH}/error_${YESTERDAY}.log ## 向 Nginx 主程序傳送 USR1 訊號。USR1 訊號是重新開啟紀錄檔檔案 kill -USR1 $(cat /usr/local/nginx/logs/nginx.pid)
然後新增定時任務:
# crontab -e */1 * * * * /bin/bash /usr/local/nginx/logs/nginx_log.sh
伺服器資源分配情況如下:
各個服務初始設定如下:
10.0.3.137的設定:
worker_processes 1; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; log_format main '$remote_addr - $http_x_forwarded_for - $http_x_real_ip'; access_log logs/access.log main; server { listen 80; location / { # proxy_set_header X-Real-IP $remote_addr; # proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass http://10.0.4.105; } } }
10.0.4.105的設定,其他設定與10.0.3.137的一致:
... location / { # proxy_set_header X-Real-IP $remote_addr; # proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass http://10.0.4.129; } ...
10.0.4.129的設定,其他設定與10.0.3.137的一致:
... location / { # proxy_set_header X-Real-IP $remote_addr; # proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass http://10.0.4.120; } ...
10.0.4.120的設定,其他設定與10.0.3.137的一致
... location / { root html; index index.html; } ...
下面的記錄為access.log中列印的結果:
操作 | 10.0.3.137 | 10.0.4.105 | 10.0.4.129 | 10.0.4.120 |
---|---|---|---|---|
10.1.9.98存取curl http://10.0.3.137 | 10.1.9.98 - - - - | 10.0.3.137 - - - - | 10.0.4.105 - - - - | 10.0.4.129 - - - - |
10.0.3.137開啟X-Forwarded-For | 10.1.9.98 - - - - | 10.0.3.137 - 10.1.9.98 - - | 10.0.4.105 - 10.1.9.98 - - | 10.0.4.129 - 10.1.9.98 - - |
10.0.4.105開啟X-Forwarded-For | 10.1.9.98 - - - - | 10.0.3.137 - 10.1.9.98 - - | 10.0.4.105 - 10.1.9.98, 10.0.3.137 - - | 10.0.4.129 - 10.1.9.98, 10.0.3.137 - - |
10.0.4.129開啟X-Forwarded-For | 10.1.9.98 - - - - | 10.0.3.137 - 10.1.9.98 - - | 10.0.4.105 - 10.1.9.98, 10.0.3.137 - - | 10.0.4.129 - 10.1.9.98, 10.0.3.137, 10.0.4.105 - - |
10.1.9.98偽造頭部存取curl http://10.0.3.137 -H ‘X-Forwarded-For: 1.1.1.1’ | 10.1.9.98 - 1.1.1.1 - - | 10.0.3.137 - 1.1.1.1, 10.1.9.98 - - | 10.0.4.105 - 1.1.1.1, 10.1.9.98, 10.0.3.137 - - | 10.0.4.129 - 1.1.1.1, 10.1.9.98, 10.0.3.137, 10.0.4.105 - - |
10.0.3.137開啟X-Real-IP | 10.1.9.98 - - - - | 10.0.3.137 - 10.1.9.98 - 10.1.9.98 | 10.0.4.105 - 10.1.9.98, 10.0.3.137 - 10.1.9.98 | 10.0.4.129 - 10.1.9.98, 10.0.3.137, 10.0.4.105 - 10.1.9.98 |
10.0.4.105開啟X-Real-IP | 10.1.9.98 - - - - | 10.0.3.137 - 10.1.9.98 - 10.1.9.98 | 10.0.4.105 - 10.1.9.98, 10.0.3.137 - 10.0.3.137 | 10.0.4.129 - 10.1.9.98, 10.0.3.137, 10.0.4.105 - 10.0.3.137 |
10.0.4.129開啟X-Real-IP | 10.1.9.98 - - - - | 10.0.3.137 - 10.1.9.98 - 10.1.9.98 | 10.0.4.105 - 10.1.9.98, 10.0.3.137 - 10.0.3.137 | 10.0.4.129 - 10.1.9.98, 10.0.3.137, 10.0.4.105 - 10.0.4.105 |
10.1.9.98偽造頭部存取 curl http://10.0.3.137 -H ‘X-Real-IP: 8.8.8.8’ | 10.1.9.98 - - - 8.8.8.8 | 10.0.3.137 - 10.1.9.98 - 10.1.9.98 | 10.0.4.105 - 10.1.9.98, 10.0.3.137 - 10.0.3.137 | 10.0.4.129 - 10.1.9.98, 10.0.3.137, 10.0.4.105 - 10.0.4.105 |
在java中,如果請求沒有經過nginx代理,可以使用如下方法獲取使用者端的真實IP:
# 類似nginx中的$remote_addr request.getRemoteHost();
如果請求經過了nginx代理,可以從請求頭中獲取(前提是必須正確設定nginx才能獲取到):
request.getHeader("x-real-ip");
如果是用的其他Apache,Squid等反向代理軟體,同樣是從請求頭中獲取真實IP,只是屬性名不一樣而已。
到此這篇關於專案中Nginx多級代理是如何獲取使用者端的真實IP地址的文章就介紹到這了,更多相關Nginx多級代理獲取使用者端真實IP內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45