Tôi đang cố gắng thực hiện trung tâm Mercure từ người giám sát, nhưng tôi không thể thực hiện được. Mercure nằm trong cùng một máy của máy chủ web với SSL virtualhost cho pami54.local
miền.
[chương trình:mercure]
môi trường=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=%(program_name)s_$(process_num)s
numprocs=1
tự khởi động=true
#thư mục=/tmp
tự khởi động lại=true
bắt đầu = 5
số lần bắt đầu = 10
redirect_stderr=false
stdout_capture_maxbytes=1MB
stderr_capture_maxbytes=1MB
stdout_logfile=/var/log/supervisor/mercureout.log
stderr_logfile=/var/log/supervisor/mercureerror.log
CHỈNH SỬA:
Tôi đã thành lập một giải pháp một phần. Trong Caddyfile, tôi đã hủy kích hoạt máy chủ caddy trên cổng 80, đặt chỉ thị auto_https thành 'disable_redirects', duy trì Caddyfile theo cách này:
# Tìm hiểu cách định cấu hình Mercure.rocks Hub trên https://mercure.rocks/docs/hub/config
{
{$GLOBAL_OPTIONS}
auto_https disable_redirects
}
pami54.local:3000
đăng nhập
tls /etc/apache2/ssl-cert/pami54.local.crt /etc/apache2/ssl-cert/pami54.local.key
tuyến đường {
mã hóa zstd gzip
đánh bóng {
# Vận chuyển để sử dụng (mặc định là Bolt)
transport_url {$MERCURE_TRANSPORT_URL:bolt://mercure.db}
# Khóa JWT của nhà xuất bản
Publisher_jwt {env.MERCURE_PUBLISHER_JWT_KEY} {env.MERCURE_PUBLISHER_JWT_ALG}
# Khóa JWT của người đăng ký
subscriber_jwt {env.MERCURE_SUBSCRIBER_JWT_KEY} {env.MERCURE_SUBSCRIBER_JWT_ALG}
# Chỉ thị bổ sung
cors_origins https://pami54.local
xuất bản_origins *
{$MERCURE_EXTRA_DIRECTIVES}
}
trả lời /healthz 200
trả lời "Không tìm thấy" 404
}
Cấu hình máy chủ ảo của nó:
<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>
Bằng cách này, khách hàng có thể kết nối với Mercure trên https://pami54.local/.well-known/mercure
, ngay cả khi mất kết nối xảy ra, máy khách đã kết nối lại thành công với trung tâm, nhưng khi máy chủ (ứng dụng web) cố gắng xuất bản thông báo trên trung tâm, lỗi nhật ký máy khách http của symfony:
[2022-04-27T19:29:40.857698-04:00] http_client.INFO: Yêu cầu: "POST https://pami54.local/.well-known/mercure" [] []
[2022-04-27T19:29:40.871491-04:00] messenger.CẢNH BÁO: Đã xảy ra lỗi khi xử lý tin nhắn App\Message\NotificacionMarcarComoLeidaMessage. Đang gửi để thử lại #1 với độ trễ 1000 ms. Lỗi: "Xử lý "Ứng dụng\Message\NotificacionMarcarComoLeidaMessage" không thành công: Không thể gửi bản cập nhật." {"message":{"App\Message\NotificacionMarcarComoLeidaMessage":[]},"class":"App\Message\NotificacionMarcarComoLeidaMessage","retryCount":1,"delay":1000,"error": "Xử lý \"Ứng dụng\Message\NotificacionMarcarComoLeidaMessage\" không thành công: Không thể gửi bản cập nhật.","Ngoại lệ":"[đối tượng] (Symfony\Component\Messenger\Exception\HandlerFailedException(code: 0) : Xử lý \"Ứng dụng\Message\NotificacionMarcarComoLeidaMessage\" không thành công: Không thể gửi bản cập nhật. tại /var/www/html/pami54.local/vendor/symfony/messenger/Middleware/HandleMessageMiddleware.php:129)\n[ ngoại lệ trước đó] [đối tượng] (Symfony\Component\Mercure\Exception\RuntimeException(code: 0): Không thể gửi bản cập nhật.tại /var/www/html/pami54.local/vendor/symfony/mercure/src/Hub.php:104)\n[ngoại lệ trước đó] [đối tượng] (Symfony\Component\HttpClient\Exception\TransportException( mã: 0): Yêu cầu không được xử lý và có thể được thử lại một cách an toàn tại /var/www/html/pami54.local/vendor/symfony/http-client/Response/CommonResponseTrait.php:148)\n[ngoại lệ trước đó] [ object] (Symfony\Component\HttpClient\Exception\TransportException(code: 0): Yêu cầu không được xử lý và có thể được thử lại an toàn tại /var/www/html/pami54.local/vendor/symfony/http- client/Chunk/ErrorChunk.php:65)\n[ngoại lệ trước] [đối tượng] (Amp\Http\Client\Connection\UnprocessedRequestException(code: 0): Yêu cầu không được xử lý và có thể thử lại an toàn tại /var/www/html/pami54.local/vendor/amphp/http-client/src/Connection/DefaultConnectionFactory.php:117)\n[ngoại lệ trước đó] [đối tượng] (Amp\Http\Client\SocketException( mã: 0): Kết nối với 'pami54.local:443' không thành công tại /var/www/html/pami54.local/vendor/amphp/http-client/ src/Connection/DefaultConnectionFactory.php:118)\n[ngoại lệ trước đó] [đối tượng] (Amp\Socket\ConnectException(code: 111): Kết nối tới tcp://pami54.local:443 bị từ chối tại /var/www /html/pami54.local/vendor/ampphp/socket/src/DnsConnector.php:108)"} []
Lỗi này có nghĩa là gì khi ném thành phần HTTP CLIENT của symfony? Tôi nghĩ rằng tôi đã giải quyết được vấn đề. Ít nhất các máy khách kết nối kết nối lại với trung tâm, bây giờ vấn đề là khi ứng dụng web cố gắng xuất bản lên trung tâm Mercure.
Tôi phải nói rằng môi trường cục bộ của tôi không có máy chủ dns, tất cả là với máy chủ ảo cục bộ và tên miền được khai báo trong /etc/hostname.conf
của máy ảo Debian:
#/etc/hostname.conf
debiandev
pami54.local