node.js - 如何在 https 客户端的服务器上显示图像?
问题描述
- 服务器(Express)在端口 4000 上工作,它在 /public/image.png 有一个图像
- 完成设置 Express 静态文件服务
- 客户端 (Next.js) 在端口 3000 上工作
当我在本地测试时,
<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消息。
nginx
使用带有+letsencrypt
环境的代理的生产服务器。
有什么帮助吗?
解决方案
我猜你使用 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
推荐阅读
- c# - 在符号“#”之后无法获取部分 url
- woocommerce - 创建 Woocommerce 产品并通过 slug 而不是 id 设置其标签
- telegram - 通过浏览器链接使用文本消息打开特定用户的 Telegram 聊天
- reactjs - 反应表标题的不同颜色
- kubernetes - k3s - 无法根据服务名称访问我的服务
- dart - 页面标题在当前页面和上一页之间不断变化
- android - 使用 DocumentFile TreeUri 在 Android 11 上的 MediaStore 中更新 DATE_MODIFIED
- reactjs - 功能组件已卸载,请求失败时如何将错误发送回父级?
- python - 创建(嵌套)字典并导出到 JSON 文件
- javascript - WebSocket 连接到 'ws://localhost:5080/live/?id=mystream' 失败 - red5pro