当前位置: 代码网 > 服务器>服务器>Linux > 解决Nginx转发图片不能显示的问题

解决Nginx转发图片不能显示的问题

2024年11月09日 Linux 我要评论
背景:最近很多小伙伴使用nginx代理iserver,将http协议成https协议,但是可能会出现以下几种情况:(1) 图片、js、css等静态资源无法加载(2)代理后页面跳转回http协议(3)代

背景:最近很多小伙伴使用nginx代理iserver,将http协议成https协议,但是可能会出现以下几种情况:(1) 图片、js、css等静态资源无法加载

(2)代理后页面跳转回http协议

(3)代理后访问服务管理界面提示“该用户无查询服务访问统计信息权限”

针对上述情况应该如何解决问题呢?其实这些问题都是因为代理后丢失https协议,导致请求变成http,下面我将详细讲解如何避免这个问题。本文采用的openssl去生成公钥和私钥。生成密钥的方式可以参考博客(nginx代理iserver的http协议成https)介绍得比较详细,在此就不做多余的说明了。首先我们需要引入一个nginx知识:sub_filter模块为nginx官方自带的模块,功能为替换掉返回给客户端数据的指定内容。需要使用该功能时只需要在编译时添加对该模块的支持,便会编译到nginx的内核。本需介绍的方式就是利用sub_filter将http替换成https。sub_filter语法包括:sub_filter_types:*; 需要替换的类型,如text/htnl text/plain application/ javascript等,以空格分隔,默认只查找文本型文件;sub_filter_once: on/off; 是否只替换一次,on是开启此功能,off是关闭——默认值是on;sub_filter: xxx1 xxx2; 前面的参数为原始内容,后面的参数为替换后的内容。nginx配置说明:

# https配置
    server {
        listen       8000 ssl;
        server_name  ip;
        ssl_certificate      nginxrsacert.pem;
        ssl_certificate_key  nginxrsacert.key;
        ssl_session_cache    shared:ssl:1m;
        ssl_session_timeout  5m;
        ssl_ciphers  high:!anull:!md5;
        ssl_prefer_server_ciphers  on;
        location / {
            proxy_pass   http://ip:8090;
            proxy_set_body $request_body;
            proxy_set_header accept-encoding "";
            proxy_set_header host $host:8000;
            sub_filter_once off;
            sub_filter_types *;
            sub_filter 'http://ip:8000/iserver' 'https://ip:8000/iserver';
        }
  }

结果验证:(1)图片、js、css静态资源正常加载

(2)代理后页面跳转回均为https协议

(3)代理后访问服务管理界面正常

本文转自

解决nginx代理iserver的http协议成https后页面出现跳转回http协议的情况_nginx代理总是跳转登录页面

https://blog.csdn.net/supermapsupport/article/details/127074609

到此这篇关于解决nginx转发图片不能显示的文章就介绍到这了,更多相关nginx转发内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com