我們正在使用MUP將流星部署到AWS。幾周前我們很興奮,現在我們可以切換到免費的證書,這要歸功於Letsencrypt和Kadira。一切工作都非常好,直到我在日誌中意識到客戶端IP不再通過代理傳遞了......無論我做什麼,我都將127.0.0.1
視爲我的客戶端IP。我試圖在使用this.connection.clientIP
或headers包的方法中找到它。通過MUP和SSL獲取真實IP
那麼,在深入研究和深入研究stub和nginx的工作方式之後,我得出結論:這是行不通的。
我想出的最好的解決方案是使用proxy_protocol作爲described by Chris,但我無法讓它工作。
我玩過/opt/stud/stud.conf
的設置,並試圖打開write-proxy
和proxy-proxy
設置。
這是我的nginx的配置是什麼樣子:
server {
listen 80 proxy_protocol;
server_name www.example.com example.com;
set_real_ip_from 127.0.0.1;
real_ip_header proxy_protocol;
access_log /var/log/nginx/example.access.log;
error_log /var/log/nginx/example.error.log;
location/{
proxy_pass http://127.0.0.1:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Proto http;
}
}
這裏是我的頭看起來像生產EC2服務器上:
accept:"text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8"
accept-encoding:"gzip, deflate, sdch"
accept-language:"en-US,en;q=0.8"
cache-control:"no-cache"
connection:"upgrade"
host:"127.0.0.1:3000"
pragma:"no-cache"
upgrade-insecure-requests:"1"
x-forwarded-for:"127.0.0.1"
x-forwarded-proto:"http"
x-ip-chain:"127.0.0.1,127.0.0.1"
x-real-ip:"127.0.0.1"
所以,當天的問題。通過SSL使用MUP,有沒有辦法獲得傳遞客戶端IP地址?
問題是,我無法在配置中的任何地方得到IP ...它甚至不會被髮送到nginx,因爲SSL正在終止在stud –