背景:由于公司有个项目是.net写的,但是开发人员已经离职好久了。老项目也不怎么变动就没有招新人,于是乎就把项目交接给了一位php开发人员。
今天那位php开发人员跑过来,说https://wap.abc.com/域名要增加功能,因为第三方有调整了。但是之前的.net代码又不敢动,域名在程序里面还是写死的。
就是说 1.不能换域名;
2. 在原来的项目下增加新功能
3.已经没有.net开发人员,还有php开发者要如期完成。
方法:新功能用php写比如:https://wap.abc.com/php-func/, 然后第三方访问https://wap.abc.com/php-func/就用php处理,php项目在https://asm.test.com/
剩余其他的访问地址还是用原来.net处理。
最后只需要解决访问 https://wap.abc.com/php-func 就交给https://asm.test.com/处理返回返回数据
因为所以的web请求都必须经过nginx代理,所以上面的需求实现由nginx代理处理就可以了。
so,nginx配置如下:
[root@192-168-100-100 net.conf]# more wap.abc.conf server { listen 80; server_name wap.abc.com; access_log /var/log/nginx/wap.abc.log main; set $web_url $host; ##add### location ^~/phpfunc/ { rewrite ^/phpfunc/(.*)$ /$1 break; proxy_pass http://asm.test.com; } ###end#### location / { proxy_pass http://net.server; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; set $domain default; } }
ps:还有其他解决方案,比人开发人员可以写一个html放在.net项目下面,然后通过html实现跨域访问,还有其他网上说的一些方法
测试get和post请求都是正常的,访问的https://wap.abc.com/php-func/下面的方法 都会让 https://asm.test.com/ 下面的方法处理 方法名相同
什么情况下是跨域:两个url只要协议、域名、端口有任何一个不同,都被当作是不同的域,相互访问就会有跨域问题。