ฉันพยายามเรียกใช้ฮับ Mercure จากหัวหน้างาน แต่เป็นไปไม่ได้สำหรับฉัน Mercure อยู่ในเครื่องของเว็บเซิร์ฟเวอร์เดียวกันกับ SSL virtualhost สำหรับ pami54.local
โดเมน.
[โปรแกรม:เมอร์เคียว]
สภาพแวดล้อม = JWT_KEY = "m3rcu353cr37pa55pra53DEV"; CORS_ALLOWED_ORIGINS="https://pami54.local"; PUBLISH_ALLOWED_ORIGINS="*"; ADDR="pami54.local:3000"
command=/home/frizquierdo/mercureLinux/mercure run -config /home/frizquierdo/mercureLinux/Caddyfile
process_name=%(ชื่อโปรแกรม)s_$(process_num)s
numprocs=1
autostart = จริง
#ไดเรกทอรี=/tmp
รีสตาร์ทอัตโนมัติ = จริง
startecs=5
startretries=10
redirect_stderr=เท็จ
stdout_capture_maxbytes=1MB
stderr_capture_maxbytes=1MB
stdout_logfile=/var/log/supervisor/mercureout.log
stderr_logfile=/var/log/supervisor/mercureerror.log
แก้ไข:
ฉันได้ค้นพบวิธีแก้ปัญหาบางส่วนแล้ว ใน Caddyfile ฉันปิดใช้งานเซิร์ฟเวอร์แคดดี้ที่พอร์ต 80 ตั้งค่าคำสั่ง auto_https เป็น 'disable_redirects' โดยคง Caddyfile ไว้ด้วยวิธีนี้:
# เรียนรู้วิธีกำหนดค่า Mercure.rocks Hub บน https://mercure.rocks/docs/hub/config
{
{$GLOBAL_OPTIONS}
auto_https enable_redirects
}
pami54.local:3000
บันทึก
tls /etc/apache2/ssl-cert/pami54.local.crt /etc/apache2/ssl-cert/pami54.local.key
เส้นทาง {
เข้ารหัส zstd gzip
เมอร์เคียว {
# การขนส่งเพื่อใช้ (ค่าเริ่มต้นคือ Bolt)
transport_url {$MERCURE_TRANSPORT_URL:bolt://mercure.db}
# คีย์ผู้เผยแพร่ JWT
Publisher_jwt {env.MERCURE_PUBLISHER_JWT_KEY} {env.MERCURE_PUBLISHER_JWT_ALG}
# รหัสสมาชิก JWT
subscriber_jwt {env.MERCURE_SUBSCRIBER_JWT_KEY} {env.MERCURE_SUBSCRIBER_JWT_ALG}
#คำแนะนำเพิ่มเติม
cors_origins https://pami54.local
เผยแพร่_กำเนิด *
{$MERCURE_EXTRA_DIRECTIVES}
}
ตอบกลับ /healthz 200
ตอบกลับ "ไม่พบ" 404
}
การกำหนดค่า virtualhost:
<IfModule mod_ssl.c>
#SSLStaplingCache "shmcb:${SRVROOT}/logs/ssl_stapling(32768)"
<VirtualHost *:443>
ServerName pami54.local
ServerAlias wwww.pami54.local
DocumentRoot "/var/www/html/pami54.local/public"
DirectoryIndex index.php
<Directory "/var/www/html/pami54.local/public/">
AllowOverride All
Order Allow,Deny
Allow from All
#Require local
Require all granted
<IfModule mod_rewrite.c>
Options -MultiViews
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php [QSA,L]
</IfModule>
</Directory>
SSLEngine on
SSLProtocol all -SSLv3 -SSLv2
SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
SSLCertificateFile "/etc/apache2/ssl-cert/pami54.local.crt"
SSLCertificateKeyFile "/etc/apache2/ssl-cert/pami54.local.key"
SSLUseStapling off
<FilesMatch "\.(cgi|shtml|pl|asp|php)$">
SSLOptions +StdEnvVars
</FilesMatch>
BrowserMatch ".*MSIE.*" nokeepalive ssl-unclean-shutdown downgrade-1.0 force-response-1.0
SSLProxyEngine On
ProxyRequests Off
ProxyPreserveHost On
#ProxyPass '/.well-known/mercure' 'https://pami54.local:3000/.well-known/mercure' connectiontimeout=300 timeout=300
ProxyPass '/.well-known/mercure' 'https://pami54.local:3000/.well-known/mercure'
ProxyPassReverse '/.well-known/mercure' 'https://pami54.local:3000/.well-known/mercure'
</VirtualHost>
</IfModule>
ด้วยวิธีนี้ลูกค้าสามารถเชื่อมต่อกับ Mercure บน https://pami54.local/.well-known/mercure
แม้ว่าจะมีการตัดการเชื่อมต่อเกิดขึ้น ไคลเอนต์ก็เชื่อมต่อกับฮับอีกครั้งได้สำเร็จ แต่เมื่อเซิร์ฟเวอร์ (webapp) พยายามเผยแพร่การแจ้งเตือนบนฮับ ข้อผิดพลาดบันทึกไคลเอนต์ symfony http:
[2022-04-27T19:29:40.857698-04:00] http_client.INFO: คำขอ: "POST https://pami54.local/.well-known/mercure" [ ] []
[2022-04-27T19:29:40.871491-04:00] messenger.WARNING: เกิดข้อผิดพลาดขณะจัดการข้อความ App\Message\NotificacionMarcarComoLeidaMessage กำลังส่งเพื่อลองใหม่ #1 โดยใช้การหน่วงเวลา 1,000 มิลลิวินาที ข้อผิดพลาด: "การจัดการ "App\Message\NotificacionMarcarComoLeidaMessage" ล้มเหลว: ไม่สามารถส่งการอัปเดตได้" {"message":{"App\Message\NotificacionMarcarComoLeidaMessage":[]},"class":"App\Message\NotificacionMarcarComoLeidaMessage","retryCount":1,"delay":1000,"error": "การจัดการ \"App\Message\NotificacionMarcarComoLeidaMessage\" ล้มเหลว: ไม่สามารถส่งการอัปเดตได้","exception":"[object] (Symfony\Component\Messenger\Exception\HandlerFailedException(code: 0) : การจัดการ \"App\Message\NotificacionMarcarComoLeidaMessage\" ล้มเหลว: ไม่สามารถส่งการอัปเดตที่ /var/www/html/pami54.local/vendor/symfony/messenger/Middleware/HandleMessageMiddleware.php:129)\n[ ข้อยกเว้นก่อนหน้า] [วัตถุ] (Symfony\Component\Mercure\Exception\RuntimeException(code: 0): ไม่สามารถส่งการอัปเดตที่ /var/www/html/pami54.local/vendor/symfony/mercure/src/Hub.php:104)\n[ข้อยกเว้นก่อนหน้า] [วัตถุ] (Symfony\Component\HttpClient\Exception\TransportException( รหัส: 0): คำขอไม่ได้รับการประมวลผลและสามารถลองใหม่ได้อย่างปลอดภัยที่ /var/www/html/pami54.local/vendor/symfony/http-client/Response/CommonResponseTrait.php:148)\n[ข้อยกเว้นก่อนหน้า] [ วัตถุ] (Symfony\Component\HttpClient\Exception\TransportException(code: 0): คำขอไม่ได้รับการประมวลผลและสามารถลองใหม่ได้อย่างปลอดภัยที่ /var/www/html/pami54.local/vendor/symfony/http- client/Chunk/ErrorChunk.php:65)\n[ข้อยกเว้นก่อนหน้า] [วัตถุ] (Amp\Http\Client\Connection\UnprocessedRequestException(code: 0): คำขอไม่ได้รับการประมวลผลและสามารถลองใหม่ได้อย่างปลอดภัยที่ /var/www/html/pami54.local/vendor/amphp/http-client/src/Connection/DefaultConnectionFactory.php:117)\n[ข้อยกเว้นก่อนหน้า] [วัตถุ] (Amp\Http\Client\SocketException( รหัส: 0): การเชื่อมต่อกับ 'pami54.local:443' ล้มเหลวที่ /var/www/html/pami54.local/vendor/amphp/http-client/ src/Connection/DefaultConnectionFactory.php:118)\n[ข้อยกเว้นก่อนหน้า] [วัตถุ] (Amp\Socket\ConnectException(code: 111): การเชื่อมต่อกับ tcp://pami54.local:443 ถูกปฏิเสธที่ /var/www /html/pami54.local/vendor/amphp/socket/src/DnsConnector.php:108)"} []
ข้อผิดพลาดนี้หมายความว่าอะไรคือการโยนคอมโพเนนต์ HTTP CLIENT ของ symfony ฉันคิดว่าฉันได้แก้ปัญหาแล้ว อย่างน้อยที่สุดไคลเอนต์เชื่อมต่อการเชื่อมต่อใหม่กับฮับ ตอนนี้ปัญหาคือเมื่อเว็บแอปพลิเคชันพยายามเผยแพร่ไปยังฮับ Mercure
ฉันต้องบอกว่าสภาพแวดล้อมในเครื่องของฉันไม่มีเซิร์ฟเวอร์ dns ทั้งหมดอยู่ในโฮสต์เสมือนในเครื่องและชื่อโดเมนที่ประกาศใน /etc/hostname.conf
ของเครื่องเสมือน Debian:
#/etc/hostname.conf
เดเบียนเดฟ
pami54.local