国产+高潮+在线,国产 av 仑乱内谢,www国产亚洲精品久久,51国产偷自视频区视频,成人午夜精品网站在线观看

創(chuàng)建https服務(wù)

問:

Workerman如何創(chuàng)建一個https服務(wù),使得客戶端可以用過https協(xié)來連接通訊。

答:

https協(xié)議實(shí)際是http+SSL,就是在http協(xié)議上加入SSL層。Workerman支持http協(xié)議,同時也支持SSL(需要Workerman版本>=3.3.7),
所以只需要在http協(xié)議的基礎(chǔ)上開啟SSL即可支持https協(xié)議。

讓workerman支持https有兩種通用方案,一種是workerman直接開啟SSL,另外一種是用nginx代理SSL。兩種方案選其一即可,不可同時設(shè)置。

Workerman開啟SSL

準(zhǔn)備工作:

1、Workerman版本>=3.3.7

2、PHP安裝了openssl擴(kuò)展

3、已經(jīng)申請了證書(pem/crt文件及key文件)放在了/etc/nginx/conf.d/ssl下

<?php
use Workerman\Worker;
use Workerman\Connection\TcpConnection;
require_once __DIR__ . '/vendor/autoload.php';

// 證書最好是申請的證書
$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,
        'allow_self_signed' => true, //如果是自簽名證書需要開啟此選項(xiàng)
    )
);
// 這里設(shè)置的是http協(xié)議
$worker = new Worker('http://0.0.0.0:443', $context);
// 設(shè)置transport開啟ssl,變成http+SSL即https
$worker->transport = 'ssl';
$worker->onMessage = function(TcpConnection $con, $msg) {
    $con->send('ok');
};

Worker::runAll();

通過Workerman以上的代碼就創(chuàng)建了https服務(wù),客戶端就可以通過https協(xié)議來連接workerman實(shí)現(xiàn)安全加密通訊了。

測試:

瀏覽器地址欄輸入https://域名:443訪問。

注意:

1、https端口必須用https協(xié)議訪問,http協(xié)議無法訪問。

2、證書一般是與域名綁定的,所以測試的時候請使用域名,不要使用ip。

3、如果使用https無法訪問請檢查服務(wù)器防火墻。

利用nginx作為ssl的代理

除了用Workerman自身的SSL,也可以利用nginx作為SSL代理實(shí)現(xiàn)https。

注意
nginx代理SSL和Workerman設(shè)置SSL二選一,不能同時開啟。

通訊原理及流程是:

1、客戶端發(fā)起https連接連到nginx

2、nginx將https協(xié)議的數(shù)據(jù)轉(zhuǎn)換成http協(xié)議并轉(zhuǎn)發(fā)到Workerman的http端口

3、Workerman收到數(shù)據(jù)后做業(yè)務(wù)邏輯處理,返回http協(xié)議的數(shù)據(jù)給nginx

4、nginx再將http協(xié)議的數(shù)據(jù)轉(zhuǎn)換成https,轉(zhuǎn)發(fā)給客戶端

nginx配置參考

前提條件及準(zhǔn)備工作:

1、假設(shè)Workerman監(jiān)聽的是8181端口(http協(xié)議)

2、已經(jīng)申請了證書(pem/crt文件及key文件)放在了/etc/nginx/conf.d/ssl下

3、打算利用nginx開啟443端口對外提供wss代理服務(wù)(端口可以根據(jù)需要修改)

nginx配置類似如下


upstream workerman {
    server 127.0.0.1:8181;
    keepalive 10240;
}

server {
  listen 443;
  server_name 站點(diǎn)域名.com;
  access_log off;

  ssl on;
  ssl_certificate /etc/nginx/conf.d/ssl/server.pem;
  ssl_certificate_key /etc/nginx/conf.d/ssl/server.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://workerman;
    proxy_http_version 1.1;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header Connection "";
  }
}
編輯于2024-03-13 17:37:19 完善本頁 +發(fā)起討論
贊助商