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

 

Read More

发表回复