我的项目使用的是前后台分离,前台使用的是VUEJS,所在的域名是www.xfindzp.com,后台接口的域名是api.xfindzp.com,然后我现在开发QQ和微信的第三方登录,配置的回调域是:https://api.xfindzp.com/socia...,然后我把这个地址放到前台www.xfindzp.com里面的登录页面的a标签中,设置href="https://api.xfindzp.com/social-login/qq",但是点击跳转下面的错,经过分析发现跟阿里云服务器/etc/hosts文件和nginx配置api.xfindzp.com域名文件有关,所以记录下解决过程,分享给大家:
1、修改/etc/hosts文件
192.168.0.81 xfindzp.com api.xfindzp.com
47.97.127.145 xfindzp.com api.xfindzp.com
127.0.0.1 xfindzp.com api.xfindzp.com localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 xfindzp.com api.xfindzp.com localhost localhost.localdomain localhost6 localhost6.localdomain6
2、修改配置域名api.xfindzp.com的nginx配置文件,如下:
server {
listen 80;
server_name api.xfindzp.com;
location / {
proxy_pass http://api.xfindzp.com:6060; #这里的端口记得改成项目对应的哦
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Port $server_port;
}
}
server {
listen 443 ssl;
server_name api.xfindzp.com;
ssl_certificate /usr/local/nginx/cert/api.xfindzp/214731881260330.pem;
ssl_certificate_key /usr/local/nginx/cert/api.xfindzp/214731881260330.key;
location / {
#1、这里的api.xfindzp.com如果写成localhost或者127.0.0.1,那么肯定会报:redirect uri is illegal(100010)
#2、api.xfindzp.com想让它起作用,必须在/etc/hosts文件里面配置好,并重启服务器,否则也不会生效
proxy_pass http://api.xfindzp.com:6060;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Port $server_port;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
3、配置好两个文件,然后重启下服务器ECS就成功了,当重新访问就成功了!
4、总结:
1)分析问题原因,当报错的时候查看qq返回的url,发现有127地址,所以就查看nginx配置文件,发现确实 是自己设置了127地址,改成api.xfindzp.com之后后台又访问不了,然后又把api.xfindzp.com域名放到/etc/hosts里面,重启才生效
2)网上也有其它相关的解决方法,我这个只针对我的问题。
5、引用:
1)Spring Security源码分析三:Spring Social实现QQ社交登录
2)腾讯开放平台联调工具集
3)centos6.x配置虚拟主机名及域名hosts
4)修改centos等linux的hostname-永久生效
5)Linux修改本机/etc/hosts的hostName后经常不生效
6)redirect uri is illegal(100010)
后续:2018-8-23 21:51
按照上面设置成功是成功,但是后台接口域名api.xfindzp.com每隔多长时间访问就会非常卡处于pending,没办法我又换成localhost或者127或者自己的内网ip了,这样一来QQ互联就还是有问题,然后在网上找到一段代码proxy_set_header Host $host;设置一下居然成功了,如下:
server {
listen 80;
server_name api.xfindzp.com;
location / {
proxy_pass http://192.168.0.81:6060; #这里的端口记得改成项目对应的哦
# 设置成这个就好了
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Port $server_port;
}
}
server {
listen 443 ssl;
server_name api.xfindzp.com;
ssl_certificate /usr/local/nginx/cert/api.xfindzp/214731881260330.pem;
ssl_certificate_key /usr/local/nginx/cert/api.xfindzp/214731881260330.key;
location / {
proxy_pass http://192.168.0.81:6060;
# 设置成这个就好了
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Port $server_port;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。