我正在尝试在同一台机器上托管两个服务:在端口 3001 上运行的 Next.js 前端和在端口 8000 上运行的后端服务。前端应该可以通过 HTTPS 公开访问,而……
我试图在同一台机器上托管两个服务:一个在端口 3001 上运行的 Next.js 前端,以及一个在端口 8000 上运行的后端服务。前端应该可以通过 HTTPS 公开访问,而后端应该只能在本地访问(不公开可用)。
我可以访问 的前端 https://<my-server-name>
,但是当我尝试从前端向 发出获取请求时 https://<my-server-name>/server/...
,出现混合内容错误。
这是我的 Nginx 配置:
# Redirect HTTP to HTTPS
server {
listen 80;
listen [::]:80;
server_name <my-server-name>;
return 301 https://$server_name$request_uri;
}
# SSL support
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name <my-server-name>;
ssl_certificate <my-cert>;
ssl_certificate_key <my-cert-key>;
include snippets/ssl-params.conf;
location / {
proxy_pass http://127.0.0.1:3001/;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
location /server/ {
proxy_pass http://127.0.0.1:8000/;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
我尝试添加升级标头和 X-Forwarded-Proto 标头,但混合内容错误仍然存在。为什么会发生这种情况?我该如何修复?
谢谢你的帮助!