react 项目从 http 换到 https 后所有接口请求失效,请教 nginx 配置

2017-04-25 11:33:50 +08:00
 xilixjd

我的 nginx 配置

server {

	listen 80;
	listen 443 ssl;
    server_name 118.89.143.159;
	
    ssl on;
    ssl_certificate /etc/nginx/1_www.xilixjd.cc_bundle.crt;
    ssl_certificate_key /etc/nginx/2_www.xilixjd.cc.key;

    location /api {
            # First attempt to serve request as file, then
            # as directory, then fall back to displaying a 404.
            proxy_pass http://0.0.0.0:5000/api;
            proxy_set_header Host $host;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }

    location / {
            root /home/ubuntu/python_react_blog/python_react_blog_front_end;
            index index.html index.htm;
    }

    location /socket.io {
            include proxy_params;
            proxy_http_version 1.1;
            proxy_buffering off;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "Upgrade";
            proxy_pass http://0.0.0.0:5000/socket.io;
    }

}

各位可以访问一下 https://www.xilixjd.cc

接口数据加载不出来

浏览器右键检查 Network 接口显示 Referrer Policy: no-referrer-when-downgrade

另外还想问一下

1.如果想让访问 http://www.xilixjd.cc 的时候跳转到 https 应该怎么实现

2.网址不带 www 访问 xilixjd.cc 的时候也能跳转到 https 完整网址

16592 次点击
所在节点    NGINX
15 条回复
sujin190
2017-04-25 12:40:37 +08:00
no-referrer-when-downgrade 是 chrome 自动加的,表示从 https 降级到 http 时不发送 reffer
jackroyal
2017-04-25 12:41:19 +08:00
接口的问题我不知道怎么处理,但是后面两个跳转的问题,可以看我的博客配置 https://bblove.me/2017/04/05/nginx-https-setting-on-multiple-sites/ 。主要就是在监听 80 和 443 中判断下,当前域名是否是 https://www.aaa.cc ,不是就跳转
sujin190
2017-04-25 12:42:05 +08:00
你这个分明是访问接口时用了 ip 和端口了吧,不应该使用申请证书域名访问然后走 443 端口么?
xilixjd
2017-04-25 13:24:01 +08:00
@jackroyal 好的,感谢
@sujin190 那应该怎么弄呢?
aru
2017-04-25 13:50:03 +08:00
1. server_name 应该用你的域名
2. 关键错误: proxy_pass 的主机名写错了,不应该是 0.0.0.0 ,换成 127.0.0.1
aru
2017-04-25 13:54:50 +08:00
3. 你的 js 里面,请求的地址不对
t.DOMAIN="//118.89.143.159:5000" 换成对应的 //www.xilixjd.cc
但是需要保证你的接口可以正确访问(即 proxy_pass 配置正常)
xilixjd
2017-04-25 14:06:25 +08:00
@aru
1. server_name 改成我的域名网站就访问不了,不知道原因
2. 我是在后端改成 0.0.0.0 的,用 http 的时候没问题,换成 https 就出错了,刚按你说的改了一下还是不行
xilixjd
2017-04-25 14:08:38 +08:00
@aru 我觉得是不是接口没走 https , 如果按 http 访问,如 http://118.89.143.159:5000/api/blog/all 是正常的
但是 https://118.89.143.159:5000/api/blog/all 不正常
sujin190
2017-04-25 14:19:22 +08:00
@xilixjd #4 https 不支持用 ip 访问,再说你 https 由 nginx 开在 443 端口,你到 5000 端口访问当然不行了
zhangshine
2017-04-25 14:19:48 +08:00
这是配置的什么鬼? https 默认走 443 端口的,这样访问吧 https://www.xilixjd.cc/api/blog/all
xilixjd
2017-04-25 14:25:44 +08:00
@sujin190 好的,感谢
@zhangshine 有没有标准的 nginx 配置参考,我这个也是到处抄的野鸡配置
zhangshine
2017-04-25 14:35:11 +08:00
gunicorn 那里改成 127.0.0.1 , nginx 里面的 proxy_pass 也改成 127.0.0.1 , http 走 80 端口, https 走 443 端口,完了 5000 端口吧
zhangshine
2017-04-25 14:35:30 +08:00
忘了
xilixjd
2017-04-25 15:10:38 +08:00
@zhangshine 好的,已经弄好了,发现个非常莫名其妙的问题,就是我的后端啥都没变但是后端请求莫名变快了。。
Livid
2020-02-11 08:02:49 +08:00
@xilixjd 能变快通常就是两个原因:缓存或者 keepalive。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/357201

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX