使用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