因为服务端只开放了一个端口,由于服务器中服务需要同时支持http和https,所有通过nginx stream模块转发的。其实就是端口复用,一个端口同时支持http和https
但是wokerman获取到ip是127.0.0.1,如何获取到真实的ip呢
https://www.workerman.net/doc/webman/others/nginx-proxy.html 不就是手册这样配置么?
upstream webman { server 127.0.0.1:8787; keepalive 10240; } server { server_name 站点域名; listen 80; access_log off; root /your/webman/public; location / { proxy_set_header X-Real-IP $remote_addr; proxy_set_header Host $host; proxy_set_header X-Forwarded-Proto $scheme; proxy_http_version 1.1; proxy_set_header Connection ""; if (!-f $request_filename){ proxy_pass http://webman; } } }
proxy_set_header X-Real-IP $remote_addr; 是重点,然后$request->getRealIp() 就获取到了
proxy_set_header X-Real-IP $remote_addr;
$request->getRealIp()
因为服务器只开放了一个端口,所以http和https都使用的8008,stream监听在8008,然后转发到http服务下,http服务就是你发的这个配置
stream模块转发,端口复用导致的
已解决感谢
怎么解决的?
在stream转发后,在http模块下设置X-Real-IP 为转发后的ip
具体是怎么解决的呢,我也是这一个问题,端口要复用,在stream中写的server转发到upstream的map里面。
https://www.workerman.net/doc/webman/others/nginx-proxy.html
不就是手册这样配置么?
proxy_set_header X-Real-IP $remote_addr;
是重点,然后$request->getRealIp()
就获取到了因为服务器只开放了一个端口,所以http和https都使用的8008,stream监听在8008,然后转发到http服务下,http服务就是你发的这个配置
stream模块转发,端口复用导致的
已解决感谢
怎么解决的?
在stream转发后,在http模块下设置X-Real-IP 为转发后的ip
具体是怎么解决的呢,我也是这一个问题,端口要复用,在stream中写的server转发到upstream的map里面。