使用nginx做代理服务器。包含swoole聊天室长连接
例如当我访问www.a.com时,通过代理转接到www.b.com上获取web资源。可能为了有效的防止别人直接攻击你的服务器叭。但是弊端就是无法获取到用户的真实IP
我是在宝塔上做的反向代理。因为都是写好的配置一下就可以完成、

只需要写上代理名称和www.b.com的域名,点击确定。然后在浏览器里输入www.a.com就会显示www.b.com的内容。有效的隐藏了www.b.com的主机。(如果配置好tls 可以只给服务主机开发443端口)。
默认配置不支持websoket长连接的。

需要把location /内容变成:
location /
{
proxy_http_version 1.1;
proxy_pass https://go-wx.advantest.com.cn;
proxy_set_header Host go-wx.advantest.com.cn;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_connect_timeout 30s;
proxy_read_timeout 86400s;
proxy_send_timeout 60s;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
add_header X-Cache $upstream_cache_status;
#Set Nginx Cache
proxy_ignore_headers Set-Cookie Cache-Control expires;
add_header Cache-Control no-cache;
expires 12h;
}
关闭缓存还是会有默认缓存12小时缓存的。可以把expires 12h;这一行隐藏;
测试长连接的curl指令
curl --include \
--no-buffer \
--header "Connection: Upgrade" \
--header "Upgrade: websocket" \
--header "Host: https://www.a.com" \
--header "Origin: https://www.a.com" \
--header "Sec-WebSocket-Key: NVwjmQUcWCenfWu98asDmg==" \
--header "Sec-WebSocket-Version: 13" \
https://www.a.com