使用uwsgi部署Django程序。监听unix socket。
之所以这样用,是因为不受端口数量限制,同时本人也有一点强迫症,不喜欢开很多端口。
但是nginx的配置中,设置HTTP请求头无法转发过来。狠狠地chatgpt了一下,没用。
还得Google大法。
最终应该是nginx代理的是unix socket,所以proxy_set_header不管用。
得通过uwsgi设置"HTTP_“为前缀的请求头。
但是我看请求头里有个REMOTE_ADDR好像就是我需要的客户端公网IP地址,又切换手机流量做了几次测试,好像也正常。
探究了下REMOTE_ADDR与X-Real-IP与X-Forwarded-For的区别,感觉还是不太准确。
直到晚上,发现/etc/nginx/uwsgi_params文件里的内容。
uwsgi_param REMOTE_ADDR $remote_addr;
确实跟我废了半天力气手动设置的X-Real-IP一模一样,尬住了。
记录下来吧~