【发布时间】:2017-12-22 17:42:34
【问题描述】:
情况是这样的——
- node express app1(后端应用程序 - REST API 服务器) - 在端口 8888 上运行 - 一堆 POST 路由(身份验证、api、下载、上传..) - 与 mysql 服务器通信 - 由开发人员 #1 维护
- node (webpack, react) app2 (front end app) 在端口 80 上运行 - 由开发人员 #2 维护
本周我们设置了 nginx 和 HTTPS(通过 Let's encrypt),这意味着当用户访问 www.oursite.com - 它被重定向到带有漂亮绿色锁和安全站点的 https 站点。到目前为止,一切都很好。但是,当用户输入她的电子邮件时,app2 应该调用 app1 并且应该发送带有注册令牌的电子邮件。在我们尝试设置 nginx 并在两个应用程序上使用 http 之前,这很有效。现在这个电话没有发生。这是我们的 nginx 设置:
server {
listen 80;
listen [::]:80;
root /var/www/oursite.com/html;
index index.html index.htm index.nginx-debian.html;
server_name oursite.com www.oursite.com;
location / {
try_files $uri $uri/ =404;
}
listen 443 ssl; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/oursite.com/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/oursite.com/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
if ($scheme != "https") {
return 301 https://$host$request_uri;
} # managed by Certbot
# Redirect non-https traffic to https
# if ($scheme != "https") {
# return 301 https://$host$request_uri;
# } # managed by Certbot
}
我的问题(开发人员 #1) - 我是否应该将我的应用程序(后端应用程序 - app1 - 后端)中的所有路由替换为 https 而不是 http? Apparently Chrome is not calling http request 来自 https 站点(如我们的情况) 那么我应该如何设置 nginx - 我相信我应该在 nginx 设置中添加另一个位置部分。 如果有其他建议,请告诉我们。
【问题讨论】:
-
是的,我认为您应该能够使用环回 IP 地址(或本地主机)向 app2 发送 https 请求
标签: node.js ubuntu express nginx https