![](/img/trans.png)
[英]Conditional nginx logging if $http_x_forwarded_for exists?
[英]nginx deny based on $http_x_forwarded_for
我在 openshift 中有一個 nginx 容器。 我試圖限制來自外部 IP 的訪問,更具體地說,限制在 10.XXX 范圍之外的任何內容。
這是我的配置文件
http {
....
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
....
}
server {
listen 8080;
server_name app.okd.company.com;
allow 10.0.0.0/8;
deny all;
location / {
proxy_pass http://app/;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_redirect off;
}
location /static/ {
autoindex on;
alias /app/static/;
}
}
無論是私人的還是外部的,連接都是允許的。 這是一些日志。
10.129.2.1 - - [16/Nov/2021:19:28:57 +0000] "POST /graphql/ HTTP/1.1" 200 53384 "https://app.okd.company.com/" "Mozilla/5.0 ( X11; Linux x86_64; rv:94.0) Gecko/20100101 Firefox/94.0" "10.3.16.158"
10.131.2.1 - - [16/Nov/2021:19:42:56 +0000] "POST /graphql/ HTTP/1.1" 200 53384 "https://app.okd.company.com/" "Mozilla/5.0 ( X11; Linux x86_64; rv:94.0) Gecko/20100101 Firefox/94.0" "73.177.XXX.XXX"
第一個日志似乎允許私有 IP 連接,這是預期的,但第二個日志仍然被允許。 我不確定為什么它沒有阻塞。
編輯:
我意識到 remote_addr 在私有 IP 范圍內。 我不在乎它使用哪個代理訪問我可以控制的 nginx。 我只關心 origin/http_x_forwarded_for。 有沒有一種方法可以基於此允許或拒絕
要將http_x_forwarded_for
用作真實 IP,您應該在服務器配置中進行設置。
...
server {
set_real_ip_from 10.0.0.0/8;
real_ip_header X-Forwarded-For;
...
set_real_ip_from1
不是可選的。 它需要包含所有可能是轉發代理的地址
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.