从 https Nginx rev Proxy socket.io 加载 URL http: 的不安全尝试

Posted

技术标签:

【中文标题】从 https Nginx rev Proxy socket.io 加载 URL http: 的不安全尝试【英文标题】:Unsafe attempt to load URL http: from https Nginx rev Proxy socket.io 【发布时间】:2020-04-13 21:13:24 【问题描述】:

所以我有一个以 http 形式在 nginx 后面运行的应用程序......

我一直在测试该应用程序,似乎 https 工作正常,我发现的唯一问题是当我尝试单击弹出窗口中的链接时 另一个弹出窗口是空白的 在 devTools 控制台下,我收到以下错误...

Unsafe attempt to load URL http://dev84.mydomain.com/prweb/app/PegaRULES_/pbdorj4V2aBoI4ScEONLsEaxdEWiqDby*/SysWebInfo/MapWebInfo.xsl from frame with URL https://dev84.mydomain.com/prweb/app/PegaRULES_/pbdorj4V2aBoI4ScEONLsEaxdEWiqDby*/!STANDARD?pyActivity=%40baseclass.pzProcessURLInWindow&pyPreActivity=GetWebInfo&target=popup&portalThreadName=STANDARD&portalName=Developer&pzHarnessID=HID8FA7FD58600ED1BD74EB1DAA70BB4DA5. Domains, protocols and ports must match.

所以我认为我在我的 nginx conf 中遗漏了一些东西?我一直在玩以前的 confs,这些 confs 可以在没有套接字的类似版本的应用程序上工作,所以我看到这个版本几乎只适用于套接字配置,但我知道我错过了一些东西

server 
        listen         80; 
        server_name    dev84.mydomain.com;
        return         301 https://dev84.mydomain.com$request_uri;

server 
        server_name dev84.mydomain.com;
        listen         443 ssl ;
        location /  
                proxy_http_version 1.1;
                proxy_set_header Upgrade $http_upgrade;
                proxy_set_header Connection "upgrade";
                proxy_set_header Host $host;
                proxy_redirect off;
###################################################old conf#########
                #proxy_set_header Host $http_host;
                #proxy_set_header X-Forwarded-Host $http_host;
                #proxy_set_header X-Forwarded-Host $host;
                #proxy_set_header X-Real-IP $remote_addr;
                #proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                #proxy_connect_timeout 90;
                #proxy_send_timeout 90;
                #proxy_read_timeout 90;
                #proxy_buffer_size 16k;
                #proxy_buffers 32 8k;
                #proxy_busy_buffers_size 64k;
                #client_max_body_size 100M;
###################################################old conf#########
                proxy_pass http://dev;
           
 

【问题讨论】:

“不安全地尝试加载 URL http” 现代浏览器禁止或强烈警告使用/链接到 HTTP 资源的 HTTPS 资源。所以这不是配置问题(这里是题外话,与编程无关),而是确保所有资源(iframe、字体、脚本、css 等)都在 https 方案下的问题。 PS:请不要混淆不清,也不要使用mydomain.com,因为它存在并且肯定不是你的。您可以使用example.comexample.net 对事物进行匿名化处理,尽管在大多数情况下,最好提供真实姓名,以便大家更轻松地解决问题,从而更好地帮助您。 【参考方案1】:

所以在深入挖掘之后,这个 conf 对我有用...

server 
        server_name dev84.mydomain.com;
        listen         443 ssl ;
        location /  
                proxy_http_version 1.1;
                proxy_cache_bypass  $http_upgrade;
                proxy_set_header Upgrade $http_upgrade;
                proxy_set_header Connection "upgrade";
                proxy_set_header Host $host;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-Proto $scheme;
                proxy_pass http://dev;
           

【讨论】:

以上是关于从 https Nginx rev Proxy socket.io 加载 URL http: 的不安全尝试的主要内容,如果未能解决你的问题,请参考以下文章

ngxin常用配置--nginx之proxy_pass代理后端https请求完全解析

Docker使用nginx-proxy对Nextcloud进行https反向代理

nginx能不能转发ftp请求

nginx实现https的配置文件

Nginx https代理,不要终止ssl

终于成功配置 nginx + proxy