nginx解决跨域问题

背景:由于公司有个项目是.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只要协议、域名、端口有任何一个不同,都被当作是不同的域,相互访问就会有跨域问题。

 

posted @ 2017-08-28 18:33  warren1236  阅读(317)  评论(0编辑  收藏  举报