我一直在我的開發服務器上運行燒瓶護身符,一切正常。然而,在我的生產專用服務器(Almalinux)上安裝了相同的代碼和要求,只需在 app = Flask(__name__) 之后添加 Talisman(app) 會導致網頁無法加載并重定向到https://localhost:8000。輸入域后,我在瀏覽器上準確得到的錯誤訊息是:
無法訪問此站點 - localhost 拒絕連接
我正在運行帶有 gunicorn 20.1.0 和主管的 Nginx 1.14.1。該服務器已連接到互聯網,并且在沒有使用 Talisman 的情況下,它到目前為止運行順利。
我嘗試過但沒有任何效果的事情清單
- 暫時停止防火墻
- 重啟了 nginx
- 兩者都試圖通過其域和 IP 地址訪問該網站 - 重定向到 localhost:8000 仍然存在
- 嘗試在其他埠上運行應用程式,例如 8000 進行測驗
- 將代碼簡化為一個在我的開發服務器上運行良好但在我的生產服務器上運行良好的迷你教程。所以我認為它不可能是應用程式本身。
- 檢查錯誤日志,實際上沒有任何內容,不在 nginx 錯誤日志或 python 應用程式錯誤日志中。訪問日志顯示什么都沒有,就像一切都檢查出來一樣。
- 搜索了互聯網,沒有發現任何可以指向正確方向并解釋失敗的重定向到 localhost:8000
這是一個精簡的教程代碼,應該運行但不在我的服務器上運行:
from flask import Flask
from flask_talisman import Talisman
app = Flask(__name__)
Talisman(app)
app.secret_key = 'kungfoo'
@app.route('/', methods=['GET', 'POST'])
def index():
return "Hello stackoverflow!"
if __name__ == "__main__":
app.run(debug=True)
uj5u.com熱心網友回復:
好,
proxy_set_header X-Forwarded-Proto $scheme;
在服務器的 location / {} 塊中的 nginx.conf 中執行技巧。這在 gunicorn 檔案中有所說明,很容易被遺漏......
建議將協議資訊傳遞給 Gunicorn。許多 Web 框架使用此資訊來生成 URL。如果沒有這些資訊,應用程式可能會在“https”回應中錯誤地生成“http”URL,從而導致混合內容警告或應用程式損壞。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/417303.html
標籤:
