首页 > 解决方案 > 如何在 https 客户端的服务器上显示图像?

问题描述

当我在本地测试时,

<image src="http://localhost:4000/image.png" />我可以完美地看到它。直接访问http://localhost:4000/image.png地址将显示图像下载弹出窗口。

但在生产服务器中,

<image src="https://example.com/image.png" />我看不到图像。直接访问以在客户端上https://example.com/image.png显示Not Found消息。

有什么帮助吗?

标签: node.jsexpressnginxservernext.js

解决方案


我猜你使用 nginx 反向代理将你的请求重定向到端口 3000 的应用程序。

但是图像位于运行在 4000 上的不同应用程序上

您的 nginx 配置可能类似于:

server {
    server_name example.com
    listen 80;
    location / {
        proxy_pass http://localhost:3000;
        proxy_http_version 1.1;
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }
}

您可以做的是添加一个新位置images,例如重定向到您的端口 4000 应用程序

server {
    server_name example.com
    listen 80;
    location / {
        proxy_pass http://localhost:3000;
        proxy_http_version 1.1;
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }
    location /images {
        proxy_pass http://localhost:4000;
        proxy_http_version 1.1;
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }
}

每个http://example.com/images请求都将直接重定向到您的 4000 端口应用程序现在您的图像将在http://example.com/images/image.png


推荐阅读