作者回复: 是的,这个时候就没有办法区分了。
作者回复: 传输层并不知道是哪个进程、哪个应用(Nginx还是浏览器),它只知道端口!所以,同一个端口只能被一个进程打开,如果另一个进程也打开,就会提示端口已被占用。
作者回复: openresty迭代很快,很多功能是在变动的,例如lua_code_cache 指令,我猜应该是这篇文章最初写的时候还没有这个指令吧。
_G是Lua VM提供的,目前默认lua_code_cache 是打开的,你可以尝试lua_code_cache关闭看,这样每个请求都有独立的VM,_G也就独立了。
默认情况下,Lua VM是被多个请求共用的,因此_G也会互相影响。
作者回复: 可以尝试从epoll的epoll_wait和epoll_ctl这两个方法的使用,特别是epoll_ctl时添加的可读、可写事件,从这种API的使用方法上去理解网络事件,了解什么叫多路复用。
作者回复: 我猜你是想问,nginx前有反向代理,所以nginx通过remote_addr变量拿到的只是反向代理的IP,不是用户IP?通过X-Forward-For头部可以,在第3部分课程中会有一堂课介绍realip模块,它会去取真实IP。