几天前,我启动了一个新网站,一些用户在其chrome浏览器中收到了这个奇怪的错误: ERR_SSL_PROTOCOL_ERROR
此错误仅对某些用户和某些特殊条件(例如,当他们使用其wifi网络但使用移动数据有效)有效。
我有一个带有puma和nginx的Rails应用程序,所有的http域(www和非www)都重定向到了https,我的ssl证书运行正常。
在导轨中,我有此配置来强制使用ssl和动作电缆
config.action_cable.url = 'wss://example.com/cable'
config.action_cable.allowed_request_origins = ["https://example.com", "https://www.example.com"]
config.force_ssl = true
我在nginx中也有用于动作电缆的配置,http://puma
看起来很奇怪,但在大多数情况下都能正常工作
server {
listen 443 ssl;
ssl on;
ssl_ciphers ECDH+AESGCM:ECDH+AES256:ECDH+AES128:DH+3DES:RSA+3DES:!ADH:!AECDH:!MD5;
ssl_prefer_server_ciphers on;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLS 1.3;
ssl_certificate /etc/ssl/crtbundle.pem;
ssl_certificate_key /etc/ssl/_.example.com_private_key.key;
server_name example.es;
...
location /cable {
proxy_pass http://puma;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Proto https;
proxy_redirect off;
}
...
}