久久久久av_欧美日韩一区二区在线_国产精品三区四区_日韩中字在线

Discuz! 官方交流社區

標題: X3.5 新安裝套了CloudFlare, 無法登錄 [打印本頁]

作者: og01    時間: 2023-6-16 15:39
標題: X3.5 新安裝套了CloudFlare, 無法登錄
我按照文檔, 安裝好Discuz X3.5, 用haproxy+ssl證書使用沒有問題, 可以登錄, 驗證碼也可以正常使用。 問題出在套了CloudFlare后, 登錄的url schema變成了http

(, 下載次數: 23)

我按照專家的一些帖子修改了一些配置
  1. $_config['ipgetter']['setting'] = 'header';
  2. $_config['ipgetter']['header']['header'] = 'HTTP_CF_CONNECTING_IP';
  3. $_config['output']['upgradeinsecure'] = 1;
復制代碼

CF的配置

(, 下載次數: 27)


我的站點目前的結構是
Internet => CloudFlare CDN (free) => Haproxy => Apache/PHP runtime

Discuz X3.5是剛剛從官網上下載的, 沒有安裝任何主題和插件。 部署方式為論壇+ucenter

請各位高手幫忙診斷一下, 問題出在什么地方?

作者: 專家    時間: 2023-6-16 16:15
你既然是新安裝的,那你直接在已經套好cloudflare的情況下重新安裝一下吧。
畢竟手動改步驟不少,還挺麻煩的,你也沒啥資料需要保留。
安裝完以后記得完成這步 http://www.9999xn.com/thread-15034-1-1.html
作者: 專家    時間: 2023-6-16 16:18
如果你一定要手動改,首先需要解決進入后臺的問題,在config里解除限制以后進入后臺更新緩存,http基本上就沒有了。
但此時你的頭像大概率還是加載不出來,你還需要把discuz里的uc api和uc里的api里面的http都換成https,才算解決問題,然后再更新緩存。
作者: og01    時間: 2023-6-16 16:43
專家 發表于 2023-6-16 16:15
你既然是新安裝的,那你直接在已經套好cloudflare的情況下重新安裝一下吧。
畢竟手動改步驟不少,還挺麻煩 ...

專家您好, 我正是看了很多您的帖子來解決各種discuz的問題, 首先非常感謝。

對于我出現的這個問題, 比較奇怪, 所以我來論壇求助。 我搜索引擎找不到其他的線索。

我嘗試過套好CF安裝論壇, 同樣不行, 出現一樣的問題。 我現在是兩臺機器測試, 一臺改了hosts直接指到內網的haproxy https反代discuz, 這樣訪問時沒問題的。 全程https

一臺走CF反代, 就出現了 http, 所以我懷疑是CF回源請求是不是有問題, 但是CF里ssl設置的是Full(Strict), 所以不太會出現請求http的問題
作者: 專家    時間: 2023-6-16 18:18
og01 發表于 2023-6-16 16:43
專家您好, 我正是看了很多您的帖子來解決各種discuz的問題, 首先非常感謝。

對于我出現的這個問題,  ...

haproxy層做了ssl卸載么?
這種情況很有可能是請求到達php層的時候已經不再具備https特征,以至于系統無法正常識別。
Discuz默認是會對進來的請求的屬性進行猜測的:
  1.         private function _is_https() {
  2.                 // PHP 標準服務器變量
  3.                 if(isset($_SERVER['HTTPS']) && strtolower($_SERVER['HTTPS']) != 'off') {
  4.                         return true;
  5.                 }
  6.                 // X-Forwarded-Proto 事實標準頭部, 用于反代透傳 HTTPS 狀態
  7.                 if(isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && strtolower($_SERVER['HTTP_X_FORWARDED_PROTO']) == 'https') {
  8.                         return true;
  9.                 }
  10.                 // 阿里云全站加速私有 HTTPS 狀態頭部
  11.                 // Git 意見反饋 https://gitee.com/Discuz/DiscuzX/issues/I3W5GP
  12.                 if(isset($_SERVER['HTTP_X_CLIENT_SCHEME']) && strtolower($_SERVER['HTTP_X_CLIENT_SCHEME']) == 'https') {
  13.                         return true;
  14.                 }
  15.                 // 西部數碼建站助手私有 HTTPS 狀態頭部
  16.                 // 官網意見反饋 https://discuz.dismall.com/thread-3849819-1-1.html
  17.                 if(isset($_SERVER['HTTP_FROM_HTTPS']) && strtolower($_SERVER['HTTP_FROM_HTTPS']) != 'off') {
  18.                         return true;
  19.                 }
  20.                 // 服務器端口號兜底判斷
  21.                 if(isset($_SERVER['SERVER_PORT']) && $_SERVER['SERVER_PORT'] == 443) {
  22.                         return true;
  23.                 }
  24.                 return false;
  25.         }
復制代碼

但前提是傳入的內容至少要攜帶以上判斷條件中的其中一項屬性,系統才能識別。

你可以嘗試在php層寫一個
  1. var_dump($_SERVER);
復制代碼
把php層實際接收到的參數都打出來,看看你的配置實際是什么情況。
作者: og01    時間: 2023-6-16 20:27
專家 發表于 2023-6-16 18:18
haproxy層做了ssl卸載么?
這種情況很有可能是請求到達php層的時候已經不再具備https特征,以至于系統無 ...

多謝專家, 我檢查了haproxy的設置, 發現了問題

由于之前沒有套CDN的情況下在HAProxy上面加了一個http頭
  1. http-request add-header X-Forwarded-Proto https if { ssl_fc }
復制代碼

導致php這邊收到的是這樣的
  1.   ["HTTP_X_FORWARDED_PROTO"]=>
  2.   string(19) "https, https, https"
復制代碼

有3個https, 估計php在這里解析出錯了

我把haproxy的那行配置去掉了, 就正常了, 非常感謝 @專家





歡迎光臨 Discuz! 官方交流社區 (http://www.9999xn.com/) Powered by Discuz! W1.0