Cómo solucionar: The operation couldn’t be completed. Protocol error (NSPOSIXErrorDomain:100).
Tras pasar un dominio por un NGINX actuando como reverse proxy y Apache tras el proxy actuando como web server, me comentó alguien que la web no se veía en el navegador Safari sobre MacOS / iOS.
Al acceder al sitio web, el navegador mostraba el siguiente error:
The operation couldn’t be completed. Protocol error (NSPOSIXErrorDomain:100)
Como decía, cuando NGINX se usa como proxy inverso con Apache como back-end, este obtiene recursos de Apache usando HTTP/1.1, que el servidor back-end intenta actualizar a HTTP/2 enviando el encabezado "Upgrade: h2". Como la conexión ya está establecida en HTTP/2, falla.
Para evitar ver este error y mostrar la web de turno correctamente, podemos usar el siguiente parámetro en el archivo nginx.conf o en un include al mismo:
proxy_hide_header Upgrade;
Tras esto, bastará con hacer un reload de la configuración de NGINX y la web ya será accesible desde Safari sobre MacOS o iOS de Apple.
Fuentes:
https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_hide_header
https://trac.nginx.org/nginx/ticket/915
https://megamorf.gitlab.io/2019/08/27/safari-nsposixerrordomain-100-error-with-nginx-and-apache/
0 comentarios:
Publicar un comentario