Nginx中配置WebSocket
找到nginx.conf文件
find / -name nginx.conf
修改配置文件
vim /usr/local/nginx/conf/nginx.conf
在http内添加如下内容。
server{
listen 80;
server_name robotchat.lukeewin.top; # 这里填写的是访问的域名
location / {
proxy_pass http://127.0.0.1:9090; # 这里填写的是代理的路径和端口
proxy_set_header Host $host;
proxy_set_header X-Real_IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
# 以下配置针对websocket
location /onlineCount { # onlineCount为websocket的访问uri
proxy_redirect off;
proxy_pass http://127.0.0.1:9090;
proxy_set_header Host $host;
proxy_set_header X-Real_IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_http_version 1.1;
proxy_read_timeout 36000s;
proxy_send_timeout 36000s;
proxy_set_header Upgrade $http_upgrade; # 升级协议头 websocket
proxy_set_header Connection "upgrade";
}
}
如果没写如下语句,则会报EOFException。
proxy_read_timeout 36000s;
proxy_send_timeout 36000s;
添加如下三行语句,才能在后台中拿到真实的ip地址。
proxy_set_header Host $host;
proxy_set_header X-Real_IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
获取真实ip地址代码如下。文章来源:https://www.toymoban.com/news/detail-503718.html
public String getRealIp(HttpServletRequest request) {
String ip = request.getHeader("X-Forwarded-For");
if (StringUtils.isNotEmpty(ip) && !"unKnown".equalsIgnoreCase(ip)) {
int index = ip.indexOf(",");
if (index != -1) {
return ip.substring(0, index);
} else {
return ip;
}
}
ip = request.getHeader("X-Real-IP");
if (StringUtils.isNotEmpty(ip) && !"unKnown".equalsIgnoreCase(ip)) {
return ip;
}
return request.getRemoteAddr();
}
如果你觉得对你有用,记得收藏哦!更多内容欢迎访问我的主页以及个人博客,感谢你的阅读。文章来源地址https://www.toymoban.com/news/detail-503718.html
到了这里,关于Nginx配置WebSocket的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!