Bazı arayüzlerimizde kullanıcı bilgisinde değişiklikler oluyor ve bu arayüzler sadece erişim tarafının bizi ayarlamasına izin veriyor, bu yüzden nginx'te bir IP beyaz listemiz var.
Erişim tarafının çıkış IP'si ile donatılmıştır.
İşte nginx erişimimizden kayıtlar.
nginx bizim $remote_addr'imizi gerçek IP olarak alır, ancak aslında $http_X_Forwarded_For kullanıcının gerçek IP'sidir, $remote_addr ise f5'in özel ağ adresidir (kullanıcı -->f5 --> nginx), bu yüzden nginx yanlış isim alır ve arayüzü ayarlayan kullanıcı her zaman 403 olur.
Çözüm:
HTTP modülünde plus
set_real_ip_from 10.10.10.122; nginx'e RealIP'nin değerini oradan almasını söyle
real_ip_header X-Real-IP; RealIP değerini saklayan değişkenin adı
Kutu!
Burada nginx raporuna şunu ekledikten sonra başlıyoruz:
nginx: [emerg] unknown directive "set_real_ip_from" in /home/lnidmp/nginx/conf/nginx.conf:26
Bu yüzden realip modülünü ekleyip nginx'i yeniden derliyoruz
1、CD /usr/local/nginx-1.6.3 2、./configure --prefix=/usr/cmcc/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_realip_module 3、make && make install
İpuçları:
1. set_real_ip_from, güvenilir ön proxy'nin elde ettiği gerçek kullanıcı IP'sini ifade eder
2. real_ip_header, alınan mesajın HTTP kısmının alındığı önceki proxy iletiminin kullanıcı IP'sini ifade eder
3. real_ip_recursive Kullanıcı IP'si alınana kadar (varsayılan kapalı) özyinelemeli olarak dışlanma mı yapılacak
İlk olarak, varsayılan olarak X-Real-IP olan bir http başlık adı belirt real_ip_header.
(1) Eğer 1 IP varsa, göndericinin IP'sinin set_real_ip_from tarafından belirlenen güvenilir IP listesinde olup olmadığını kontrol eder. Eğer güvenilirse, bu X-Real-IP'deki IP değerinin kullanıcının gerçek IP değeri olduğunu ve önceki ajan tarafından anlatıldığını düşünür, bu yüzden bu değeri kendi $remote_addr değişkenine atar; Eğer güvenilmezse, işlem görülmez ve $remote_addr hâlâ gönderenin IP adresi olur.
(2) Örneğin, X-Real-Ip birden fazla IP değerine sahipse, önceki proxy şu şekilde ayarlanır: proxy_set_header X-Real-Ip $proxy_add_x_forwarded_for;
Elde ettiğiniz şey bir IP dizisi, yani real_ip_recursive değeri şu anda çok önemli. nginx, IP listesinde set_real_ip_from güven listesindeki IP'leri sağdan sola karşılaştıracak. Eğer real_ip_recursive hatalıysa, en sağdaki IP güvenilir IP olarak bulunduğunda, bir sonraki IP'nin (sağdaki ikinci) kullanıcının gerçek IP'si olduğu düşünülür. real_ip_recursive açıksa, güvenilmeyen bir IP bulana kadar sağdan sola karşılaştırılır. Sonra IP değerini $remote_addr'a da kopyalayın.
Kaynaklar:
https://help.aliyun.com/document_detail/54007.html
https://help.aliyun.com/knowledge_detail/55198.html
https://www.linux178.com/web/nginx-get-realip.html
|