服务器问答
用这边先用 stream 模块做负载均衡,然后通过 unix sock 反代后端的 server,但是这时后端记录的 example.com 日志里,访问的 IP 都是 unix: - -
。
我的疑问:
1.当 server listen 的不是 80、443 之类的端口,而是 unix sock 的时候如何获取客户端的真实 IP ?
2.如果需要 stream 模块传递真实 IP,应当怎样写?
这是完整的日志:
unix: - - [09/Sep/2019:16:50:56 +0800] "GET /v1/sss HTTP/1.1" "404" 118 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Safari/537.36" "-" "-" 0.350 382 685
这是我的 Nginx 配置(大意):
stream {
server {
listen 443;
proxy_protocol on;
proxy_pass unix:/dev/shm/localweb.sock;
ssl_preread on;
}
}
http
{
server
{
listen unix:/dev/shm/localweb.sock ssl proxy_protocol;
server_name examp美国服务器le.com;
access_log /var/log/nginx/access.log main;
error_log /var/log/nginx/error.log;
}
}