簡體   English   中英

Docker ERR_SSL_PROTOCOL_ERROR

[英]Docker ERR_SSL_PROTOCOL_ERROR

我有 2 個 docker 容器在服務器上運行:

  1. 前端 Vue.js 應用程序(0.0.0.0:6336 -> 443/tcp)
  2. Express 后端(0.0.0.0:8000 -> 443/tcp)

當前端嘗試與后端通信時,使用此請求:

https://host:8000/query

我收到此錯誤:

凈:: ERR_SSL_PROTOCOL_ERROR

后端應用了一個證書,如下所示:

app = https.createServer({
    key: fs.readFileSync('private_key.key', 'utf8'),
    cert: fs.readFileSync('cert.crt', 'utf8')
}, app)

如果我在本地運行這兩個應用程序,它工作正常。 我覺得這是一個簡單的修復,但我對 Docker 還很陌生,所以我不知道從哪里開始。

如果我將其更改為http ,則會出現此錯誤:

xhr.js:178 混合內容:位於“https://host:6336/#/search?subject=a”的頁面已通過 HTTPS 加載,但請求了不安全的 XMLHttpRequest 端點“http://host:8000/query” . 此請求已被阻止; 內容必須通過 HTTPS 提供。

我的問題是在創建https服務器之前添加listen語句,我沒有意識到順序很重要。 之前是這樣的:

var app = express()

app.listen(PORT, function() {
  console.log(`Listening on port ${PORT}...`)
});

const options = {
  key: fs.readFileSync(keyPath, 'utf8'),
  cert: fs.readFileSync(certPath, 'utf8')
}
app = https.createServer(options, app)

return app

listen應該在創建https服務器之后進行:

var app = express()

const options = {
  key: fs.readFileSync(keyPath, 'utf8'),
  cert: fs.readFileSync(certPath, 'utf8')
}
app = https.createServer(options, app)

app.listen(PORT, function() {
  console.log(`Listening on port ${PORT}...`)
});

return app

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM