nginx两种方式实现域名跳转

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了nginx两种方式实现域名跳转相关的知识,希望对你有一定的参考价值。

一、场景介绍

            因业务需要,现将两个域名进行跳转,具体如下:

            访问http://www.A.com/buyweb
            跳转到
            http://swch.B.com/ipcboss/temp1/yunhao_business_pc

            访问http://www.A.com/buyh5
            跳转到
            http://swch.B.com/ipcboss/temp1/yunhao_business_h5

二、具体配置

第一种方式:

upstream myh5 {
server 10.10.17.38:8076;
}

server {
listen 80;
#charset koi8-r;
#access_log /var/log/nginx/host.access.log main;

location / {

    root html;
    index index.html;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

    if ( $http_user_agent ~* (mobile|nokia|iphone|ipad|android|samsung|htc|blackberry) ) {
            #rewrite ^/(.*) /$1 break;
            proxy_pass http://myh5;
    }
    proxy_pass http://10.10.17.38:8076/jchx_web/;

}

location    /buyweb {
    proxy_pass http://10.10.17.38:8090/ipcboss/temp1/yunhao_business_pc/;
    proxy_set_header Host $http_host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}

重点在这里!!!

location    /ipcboss/ {
    proxy_set_header Host $http_host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_pass      http://10.10.17.38:8090/ipcboss/;
}

location    /buyh5  {
    proxy_set_header Host $http_host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_pass http://10.10.17.38:8090/ipcboss/toutiao/toutiao/;
}

error_page   500 502 503 504  /50x.html;
location = /50x.html {
    root   /usr/share/nginx/html;
}

}

注意:这里遇到一个问题,就是配置完buyweb和buyh5的location后,当访问http://www.A.com/buyweb 时可以看到页面但看不到图片以及一些js写的内容。

原因就是当进行跳转时找不到 http://10.10.17.38:8090/ipcboss/ 这下面的css以及js等文件,解决办法就是加上第二个 location /ipcboss/ ,这里的location后面一定要带上/ !!! 否则还是无法加载图片,作者也是想了很久才想明白为什么要加上这个/。感兴趣的找一下nginx配置文件location的详细解释!!!

第二种方式:

使用rewrite重写
rewrite ^/(.*) http://swch.B.com/ipcboss/temp1/yunhao_business_h5/$1 permanent;

他们两个的区别是,第一种方式在地址栏访问后,地址栏的地址不会变,而第二种方式地址栏显示地址会变成rewrite转发的地址。作者当时首先使用第二种实现的,但根据领导要求,后改用第一种实现,第一种颇费周折,好在顺利完成。

以上是关于nginx两种方式实现域名跳转的主要内容,如果未能解决你的问题,请参考以下文章

NGINX域名跳转案列

Nginx Rewrite模块(内含Nginx模块概述)———理论篇

NGINX实现域名跳转

Nginx服务的rewrite模块(理论详解)

配置Nginx服务中Rewrite的应用

nginx问题 不同域名实现跳转,原域名访问url不变,怎么样配置nginx?