<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                # 創建https服務 **問:** Workerman如何創建一個[https](http://baike.baidu.com/item/https)服務,使得客戶端可以用過[https](http://baike.baidu.com/item/https)協來連接通訊。 **答:** [https](http://baike.baidu.com/item/https)協議實際是[http](http://baike.baidu.com/item/http)+[SSL](http://baike.baidu.com/item/ssl),就是在[http](http://baike.baidu.com/item/http)協議上加入[SSL](http://baike.baidu.com/item/ssl)層。Workerman支持[http](http://baike.baidu.com/item/http)協議,同時也支持[SSL](http://baike.baidu.com/item/ssl)(```需要Workerman版本>=3.3.7```), 所以只需要在[http](http://baike.baidu.com/item/http)協議的基礎上開啟[SSL](http://baike.baidu.com/item/ssl)即可支持[https](http://baike.baidu.com/item/https)協議。 ## Workerman開啟SSL **準備工作:** 1、Workerman版本不小于3.3.7 2、PHP安裝了openssl擴展 3、已經申請了證書(pem/crt文件及key文件)放在了/etc/nginx/conf.d/ssl下 ```php <?php require_once __DIR__ . '/Workerman/Autoloader.php'; use Workerman\Worker; // 證書最好是申請的證書 $context = array( 'ssl' => array( 'local_cert' => '/etc/nginx/conf.d/ssl/server.pem', // 也可以是crt文件 'local_pk' => '/etc/nginx/conf.d/ssl/server.key', 'verify_peer' => false, ) ); // 這里設置的是http協議 $worker = new Worker('http://0.0.0.0:443', $context); // 設置transport開啟ssl,變成http+SSL即https $worker->transport = 'ssl'; $worker->onMessage = function($con, $msg) { $con->send('ok'); }; Worker::runAll(); ``` 通過Workerman以上的代碼就創建了https服務,客戶端就可以通過https協議來連接workerman實現安全加密通訊了。 **測試:** 瀏覽器地址欄輸入```[https://域名:4431```訪問。](https://%E5%9F%9F%E5%90%8D:4431%60%60%60%E8%AE%BF%E9%97%AE%E3%80%82) **注意:** 1、https端口必須用https協議訪問,http協議無法訪問。 2、證書一般是與域名綁定的,所以測試的時候請使用域名,不要使用ip。 3、如果使用https無法訪問請檢查服務器防火墻。 ## 利用nginx作為ssl的代理 除了用Workerman自身的SSL,也可以利用nginx作為SSL代理實現https。 通訊原理及流程是: 1、客戶端發起https連接連到nginx 2、nginx將https協議的數據轉換成http協議并轉發到Workerman的http端口 3、Workerman收到數據后做業務邏輯處理,返回http協議的數據給nginx 4、nginx再將http協議的數據轉換成https,轉發給客戶端 ### nginx配置參考 **前提條件及準備工作:** 1、假設Workerman監聽的是80端口(http協議) 2、已經申請了證書(pem/crt文件及key文件)放在了/etc/nginx/conf.d/ssl下 3、打算利用nginx開啟4431端口對外提供wss代理服務(端口可以根據需要修改) **nginx配置類似如下**: ```php server { listen 4431; ssl on; ssl_certificate /etc/nginx/conf.d/ssl/laychat/laychat.pem; ssl_certificate_key /etc/nginx/conf.d/ssl/laychat/laychat.key; ssl_session_timeout 5m; ssl_session_cache shared:SSL:50m; ssl_protocols SSLv3 SSLv2 TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP; location / { proxy_pass http://127.0.0.1:80; proxy_http_version 1.1; proxy_set_header X-Real-IP $remote_addr; } } ```
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看