我有一个socket.iowebservice运行端口8080在我的正式服,它响应超文本传输协议请求,但我认为它有困难解决代理时,我的客户端是发送通过web套接字协议(ws://)
我的客户告诉我服务器以400(错误请求)错误响应,所以要么是我客户端出了问题,要么是我正式服出了问题。我指望这是我的正式服,但我自己或我的同事都不知道具体在哪里。
这些是我们为节点生产盒提供的nginx配置.js。
我已将真实网址替换为 someapp.com
NGINX公司
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name app.someapp.com;
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $http_host;
proxy_pass http://127.0.0.1:3000;
}
}
server {
listen 8080;
server_name app.someapp.com;
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $http_host;
proxy_pass http://127.0.0.1:4000;
}
}
server {
listen 80;
server_name tools.someapp.com;
root /var/www/bbclient/dist;
location / {
try_files $uri $uri/ /index.html;
}
}
它是一个非常小而简单的socket.io node.js服务器,运行在生产中的端口8080上
插座。超正析象管(Image Orthicon)
const app = require('express')()
const http = require('http').Server(app)
const io = require('socket.io')(http)
const bodyParser = require('body-parser')
app.use(bodyParser.urlencoded({ extended: true }))
app.use(bodyParser.json())
// this is not responding from the client
// this is working on localhost, but not in production
io.on('connection', (socket) => {
socket.on('USER_ID', (userId) => {
if (socket.userId) {
socket.leave(socket.userId)
}
socket.userId = userId
socket.join(userId)
})
})
// this works over http, and responds in production
// by visiting http://app.someapp.com:8080 in the browser
app.get('/', (req, res) => {
res.send('some app')
})
http.listen(process.env.PORT || '8888', () => {
console.log('listening')
})
以下是网络选项卡关于来自我的客户端的请求导致400错误的说明。
chrome浏览器网络选项卡
编辑1
NGINX错误日志:
2018/02/06 17:30:39 [error] 5954#5954: *86956 upstream timed out (110: Connection timed out) while reading response header from upstream, client: 76.218.92.156, server: app.someapp.com, request: "GET /socket.io/?EIO=3&transport=polling&t=M5iAdrw&sid=Jays0pqU3StUhdjjAACb HTTP/1.1", upstream: "http://127.0.0.1:4000/socket.io/?EIO=3&transport=polling&t=M5iAdrw&sid=Jays0pqU3StUhdjjAACb", host: "someapp.com:8080", referrer: "http://tools.someapp.com/scorecards/estimating"
首先添加socket.io代理指令:
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
下面是一个示例。然后尝试增加代理连接超时:
proxy_connect_timeout 75s;
proxy_read_timeout 75s;
proxy_send_timeout 75s;
代理过程可以分为两个组件,如下所示: 确定用户的领域和主服务器 将请求转发给用户的主服务器 在对代理问题进行故障排除时,请问问自己问题发生在这两个组件中的哪一个。 可以使用来自代理服务器的radtest或radclient程序来模拟将请求转发到主服务器。 实践中的许多问题与网络问题有关。 这些问题有时难以发现。 例如,当您在非高峰时段测试速度时,延迟可以很好,但是,在高峰时段,网络将变得如此拥挤,
上面的错误有什么原因吗?
问题内容: 我的Jenkins安装(1.442,不能选择升级,因为它是公司管理的中央安装),需要(通过https)访问代理后面的SVN存储库。我相应地配置了文件,还设置了和环境变量。 SVN连接从根本上起作用: 我可以结帐项目 我打电话给SVN储存库查询变更 但是,每当由于仓库中的更改而触发构建时(或者如果我在Jenkins工作区中还没有SVN更新时手动触发构建),就会发生以下错误。当詹金斯(Je
Wiremock代理存根在带有主机的端口1234上运行http://example.com,但httpURLConnection。getResponseCode()给出连接被拒绝错误。
我在设置apache反向代理服务器时遇到问题,希望您能提供帮助。 我安装了带有apache的ubuntu服务器,并启用了以下模块: 然后我用以下内容在代理上设置000-default.conf: 路由器上的端口80和443被转发到代理服务器。在服务(1-3)服务器上,使用来自Lets Encrypt的证书启用SSL。 谢谢你的帮助!
问题内容: 我将会话参数存储在Struts2会话映射中,该会话映射是使用SessionAware接口在操作中获得的。我的应用程序位于/ MyApp路径中。 在具有反向代理重定向的Apache服务器上设置struts2应用程序之后,该重定向使URL http://www.appdomain.com/ 指向本地 主机 上的本地tomcat :8080 / MyApp ,Struts2会话处理不再起作用